小滴微服务架构-海量数据商用短链平台项目

⼩滴微服务架构-海量数据商⽤短链平台项⽬
背景
    现在我们的数据量越来越来越⼤,往往会有短时间渲染⼤量数据的要求,但是往往这些数据过⼤难以实时处理,整体切⽚花费时间⼜过长。在这⾥提出⼀种缓存加实时处理的⽅案。
准备
    软件环境,PostGIS(3.0.0rc2 r17909)和 PostgreSQL( 12.0, compiled by Visual C++ build 1914, 64-bit),数据是微软开源的房屋数据。PostGIS3.0相对与PostGIS 2.5⼤幅度提升⽮量切⽚性能,并⾏环境表现更好。风动旗杆
    预处理就是将3级到12级的⽮量切⽚事先切好。⾸先获取数据12级的最⼤最⼩xyz,通过这个范围⽣成⽹格,然后和数据相交得到⼀⼀对应的关系表a。
    接下来就是使⽤四叉树键(quadkey),四叉树有⼀些有意思的特性。第⼀,四叉树键的长度等于该⽡⽚所对应的图像级别;第⼆,每个⽡⽚的四叉树键的前⼏位和其⽗⽡⽚(上⼀图像级别所对应的⽡⽚)的
四叉树键相同,下图中,第1级的 '⽡⽚2' 是第2级的 '⽡⽚20' ⾄ '⽡⽚23' 的⽗⽡⽚,第2级的 '⽡⽚13' 是 第3级的 '⽡⽚130' ⾄ '⽡⽚133' 的⽗⽡⽚。通过四叉树的这个特性把3到11级的xyz和11级的xyz 建⽴对应关系表b,最终a和b关联可以得到三到⼗⼀级和数据的对应关系。
    根据上述内容,我们就可以⽣成⾏⽮量切⽚了,借助golang并发,千万级⾯数据预处理(加上gzip压缩)⼤概需要16分钟。
后台服务
金银花绿原酸
冰鲜台    预处理⽮量切⽚⽣成完以后,使⽤golang把⽮量切⽚全部加载进程序中,并且建⽴键值对,能够快速的判断请求的xyz在3-11级是否有数据并且存在数据时能快速获取。当数据请求⼤于⼗⼀级时候,我们使⽤数据库查询⽅式获取⽮量切⽚。后台编写时候遇到问题,后端向前端传输⼤的⽮量切⽚速度过慢。我通过数据切割⽅式解决这个问题。打个⽐⽅,吃⼀个西⽠,你⼀⼝吃不下。那我们是不是切成块吃就可以?切块就是数据分割这样能较快的传输⼜不影响数据完整性。
渲染
耐高温润滑油    前台渲染使⽤mapbox gl加载⾃定义⽮量切⽚
总结
    本⽂⽅案中使⽤缓存少量层级提升整体渲染速度,实际前端浏览中能较为流畅。由于数据限制,⽅案的测试数据较为单⼀,可能不具有代表性。本⽅案预处理切⽚层级不宜过⼤,超过12级预处理性能会急剧降低。侧安全气囊
>地下室排水沟

本文发布于:2024-09-22 11:37:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/134575.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   对应   预处理   树键   渲染   整体
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议