如何将网络请求分派给(地理上)最近的服务器

Sha*_*baz 7 networking tcp latency load-balancing

我是一名Java编码员,对网络的工作方式不太熟悉(除了基本的UDP/TCP连接)

假设我在美国,亚洲,拉丁美洲和欧洲的机器上运行服务器.当用户请求服务时,我希望他们的请求转到最靠近他们的服务器.

我是否可以拥有一个地址:mycompany.com,并以某种方式将请求路由到相应的服务器?显然,当有人去cnn.com时,他们会从靠近他们的服务器上收到图片,视频等.坦率地说,我看不出它是如何运作的.

顺便说一句,我的服务器不提供网页服务,它们提供其他服务,例如股票市场数据......以防万一.

由于我是程序员,我很想知道如何在软件中做到这一点.由于这只是闲置的好奇心,指向商业产品或服务的指针对理解这个问题不是很有帮助:)

Jef*_*ser 0

一种简单的方法是查看进入 UDP DNS 请求的 IP 地址的第一个字节(A 类),然后据此您可以提供正确的地理位置 IP。

  • 当 C 第一次想要连接到您的服务器时,他将对其本地 DNS 进行 DNS 查询。他的本地 ISP 的 DNS 服务器不会有 IP 地址,因此 ISP 的 DNS 会向您的名称服务器发送 UDP DNS 请求。为简单起见,假设他的 ISP 的 DNS 就在他附近。然后,根据 DNS 查询的源 IP 地址,决定为 DNS 查询发回哪个特定 IP。这是每次会话一次的事情。从那时起,客户端直接连接到该 IP。无需转发。 (5认同)