6

我正在做一个项目,如果我们拥有遍布全球的服务器数量(目前为 5 个)。客户端通过集中式代理连接到其中一台服务器。我们只知道客户的原产国,但一无所知。我们可以完全控制服务器,因此我们可以获得所需的所有信息。我们不控制客户端,他们必须按照标准通过这个代理进行连接。

经纪人选择具有低延迟的服务器很重要,因此对于我们拥有的数据,我认为接近度是我们唯一可用的标准。

想到的第一个想法是从每个服务器 ping 客户端,但我们没有 IP,只有国家。

我们的另一个想法是从每个服务器 ping 每个国家/地区的根节点。那里的问题是在每个国家/地区找到一个根节点。

您知道如何计算/查找“国家”之间的接近度吗?您对如何以另一种方式解决此问题有任何见解或想法吗?

4

7 回答 7

7

这很棘手,比许多人想象的要复杂,但我觉得有一个正确的答案。

当然,幼稚(但很酷)的解决方案是检查客户端的 IP,这是一个好的开始,但在“现实世界”中,地理位置并不是一切......

您只是要求“低延迟”,这意味着您应该在服务器和客户端之间进行ping并相应地分配。这个问题多次影响我个人的一个很好的例子是我在日本工作,而台湾的服务器对我来说更接近美国的服务器。但是,日本和美国之间的延迟比台湾少很多倍(更好的响应),因为连接日本和台湾的电缆和路由器以及你有什么不如日本和美国之间的延迟。所以如果你把我和台湾联系起来,因为你认为我的 IP 更接近,你会非常不喜欢我那里。除了在启动时进行 ping 和实际的小测试比保持一些不断更新的地理定位数据库更容易

于 2008-11-28T11:35:04.767 回答
4

我认为您需要的术语是“地理负载平衡”。大多数主要的负载平衡供应商都有一个解决方案——你的代理可以使用这些。

谷歌搜索地理负载平衡会得到一些有用的结果。

于 2008-11-28T11:34:03.380 回答
2

Paul 拥有它,你想要地理负载平衡——但我要补充一点,如果可以选择的话,你最好的选择是找到专门研究它的人并向他们投钱。它属于比最初出现的问题更难可靠解决的问题。

于 2008-11-28T12:49:46.630 回答
2

对此的最佳解决方案称为BGP 任播链接到演示文稿)。它是所有现代 CDN 的基石。

使用BGP 任播,多个不同的服务器分布在世界各地,并使用相同的 IP通过 BGP 向 Internet 发布。然后互联网发挥了作用——像往常一样,网络通过最短路径将流量路由到同一个 IP ,本质上为每个用户选择最近的服务器(从网络拓扑的角度来看)。

不幸的是,你不能自己通过 BGP 宣布任何事情——只有大型网络(通常是数据中心)才能做到这一点。但是可以使用负担得起的解决方案,其中大多数基于DNS 任播(即根据客户端位置解析到不同的 Web 服务器 IP) - 这并不完美,但在许多情况下就足够了(例如:dnsmadeeasy、Route 53、edgedirector 和几乎所有便宜的 CDN - cloudflare、maxcdn、cloudfront 等)。还有一些解决方案可以实现真正的 BGP 任播,即通过任播(例如 cachefly)实际提供 HTTP 流量或允许您这样做(例如 hostvirtual - 不便宜)。也可能是一个有趣的阅读。

于 2016-12-01T21:37:09.530 回答
1

ping 它们并选择具有最低延迟的那个听起来不错,但我觉得它不会扩展(当你有 100 或 1000 时会发生什么?) - 所以也许另一种解决方案更好?有很多供应商的系统就是这样做的。DNS 任播也被广泛使用。

如果您只是对它们执行 ping,则需要对每个执行多次 ping(最好是并行执行),以确保您选择的延迟确实很低,而不是碰运气。

此外,当流量非常高时,您可能希望最终通过某种方式为它们添加权重。

最后,您需要某种方法将其中一些标记为管理性关闭(用于维护)-但也许您可以通过让您的损坏而不是广告当前不可用的那些来做到这一点。

于 2008-12-06T11:39:53.553 回答
1

ping 将不起作用。大多数客户端将位于网关和/或防火墙之后,您的 ping 数据包将无法通过。Genehack 说得最好。您需要服务器负载平衡,并且仅使用地理方法可能并不总是最好的方法。最好把钱扔给专门提供 SLB 解决方案的人。

于 2008-12-31T07:34:22.550 回答
1

好的,所以有一些快速的想法。我是Digital Envoy的创始人——他们从事地理 IP 情报。几年前我离开了公司,但大约 6 年前,我们与Coyote Point Systems建立了一个联合产品,该产品正是实现了这个功能——基于地理的负载平衡。当然,有一些边缘情况(本线程中提到的台湾/中国示例)可能无法自动运行,但该产品允许用户确定一个国家的流量将流向何处。因此,如果您认为台湾最好在美国之外提供服务,那么它将被推向这种方式。

不幸的是,对该解决方案的需求并没有我们希望的那么大,而且我相信该产品已经停产。我建议联系 Coyote Point,看看他们是否可以为您提供等效的解决方案。如果没有,我认为他们会对如何去做你想做的事情有一些想法。

根据您需要提供的服务,另一种选择是使用类似 Amazon 的 CloudFront 服务。当然,如果您需要客户端连接到应用程序而不是静态文件,那将不适合您。

顺便说一句,完全披露- 我不仅是 Digital Envoy 的创始人,而且我目前在 Coyote Point 的董事会任职。

于 2008-12-31T14:09:56.947 回答