服务器端集群?

Posted

技术标签:

【中文标题】服务器端集群?【英文标题】:Server side clustering? 【发布时间】:2016-04-06 11:51:30 【问题描述】:

我已经拼命寻找可以处理多达 50 000 个标记的正确解决方案(如果服务器可以处理它,为什么不更多)我的服务器和我已经这样做了好几天了。


概念是这样的:


集群服务器的最佳解决方案/语言是什么 边?我不是在寻找一个巨大的工作代码,但我需要被推向正确的方向。 如何“缓存”“标记”已经加载的集群/标记,以便您 地图放大/缩小或平移时不会重新加载已加载的标记/集群?

理论:

正确的方式似乎类似于这样:

如果地图被缩小并且有很多标记,请在服务器中处理聚类 如果地图被放大到所有标记不再适合视口的点,则仅对视口中的标记进行聚类 - 也是服务器 如果缩放变得如此之大以至于视口中的标记数量变小(例如,cluster in browser via JS

我可以在服务器端使用的数据,也可以通过 JSON 发送到浏览器:

发出请求时通过 ajax 将边界映射到服务器 来自数据库查询的标记总数 来自数据库查询的标记坐标 可能是我目前没有意识到的其他重要/有用的东西

【问题讨论】:

【参考方案1】:

我正在使用具有 50,000 100,000 个多边形的谷歌地图应用程序。事实证明,将多边形组织成一系列区域(工作表逻辑、区域或类似)的可能性非常有用。使用通过 ajax 发送到服务器的已显示区域数组以及绑定的坐标允许我仅选择尚未显示的区域,从而减少带宽分配和渲染多边形的时间,

对于其余的策略是正确的。要进行更全面的评估,应该在 SO 中获得深入的技术小实用性。

对于服务器端语言,它们都还可以,我个人现在正在使用 php 和框架 Yii2 以及用于 mysql 的 PDO 驱动程序。重要的是使用环境可以非常轻松高效地访问数据库。

在这些条件下,使用良好的集群组织和在缩放级别允许的情况下向区域显示多边形使得应用程序 google maps 表现出色

请注意,标记的出现比多边形的出现要快,因为它涉及的坐标数量及其图形特征较少。

对于像您这样的一般性问题,很难在网上找到一个好的答案。区域取决于您管理的区域的尺寸和标记的平均密度。对于不在极点附近的区域,您可以使用坐标的一小部分。或者如果您的地理点具有与区域相关的某些属性,您可以使用它们。您可以在线找到公式,将缩放与该区域的大致尺寸联系起来。还取决于标记的收集是如何完成的。就我而言,在收集过程中,我评估了一些属性以满足此需求。

为了检查一个标记或一组标记已经在地图中,我使用简单的矢量并使用它(通过 ajax)与服务器进行动态交换。第一次向量是空的,并且向量逐渐包含“知道”已经显示的内容的元素。

【讨论】:

您如何处理该 region/area 逻辑,以便该特定缩放级别上已加载的标记不会再次加载?这是我目前最大的问题。还有如何有效地检查标记是否在地图 bounds/viewport 中?这么多悬而未决的问题,网上的有效解决方案为零。 我已经更新了答案。我希望这很有用,否则你必须发布几个更具体的问题。

以上是关于服务器端集群?的主要内容,如果未能解决你的问题,请参考以下文章

springCloud搭建微服务集群+Zuul服务器端负载均衡

google maps api v3 的服务器端集群

Nacos源码1.4.1注册中心服务端

zookeeper安装配置集群

activemq 学习系列 activemq 集群

如何在集群中获得处理本次请求的web容器的端口号?