有大佬雄心勃勃,准备打造一个地理信息平台,作为基础服务,支撑各种应用。其中一项指标,是要能经得起一定量的并发访问。
这是自然,基础服务嘛。高并发的套路,如前所学,无非就是异步机制、负载均衡、缓存、分布式数据库之类。
地图服务没有什么来自于用户的数据写入,主要是读取,异步机制估计用不上;但消息队列还是要的,可以起到削峰的作用。
地图服务是无状态的,伸缩性相对比较好处理,但也有可能在多集群甚至单集群中,不同机器提供的服务,存储的数据不一样,所以负载均衡算法要依据情况而定。
缓存对于地图来说,就是切片。切片文件应该存储在固态硬盘,或者加载到内存中才够快。
地图中的动态图层,数据源自数据库,如果需要比较高的性能,最好采用分布式数据库。NoSql天然支持分布式,也适合空间数据的存储,但NoSql不支持SQL,通常按键值查找,组合查询支持很弱;另外对空间索引支持也不好;而传统关系型数据库对空间数据库支持良好,结合紧密,但无法应对海量存储和高并发访问,因此可以将关系型数据库与NoSql结合作为空间数据库的存储方案。其中关系型数据库可以存储简略的空间信息,而NoSql可以存储详尽和归档数据,作为后备和补充。
总体结构(图来自互联网,有相似性,借用一下)
arcgis方案。地图服务不一定就要用arcgis。
有一幅图我看了觉得很牛,虽然跟本文论述没啥关系,也码下来,作为学习之用。
2021.05.19
上图中说,为了高并发写入,HBase采用了LSM存储模型。LSM是一种存储结构,关系型数据库一般是B+树,哈希树啥的。B+树等存储结构写入的时候,需要耗费一些资源来构造这个树,优点是之后查找速度有保证,缺点就是写入费时。而LSM这种结构,查找没有B+树快,但写入简单,速度就比较快。当然它查找速度也不一定很慢,还是会有一些处理。