Answers:
是的,目前有两种流行的解决方案。
第一个称为Anycast
,其中相同的IP块实际上在全球多个地方都在使用。也就是说,您的域的名称服务器始终返回相同的IP地址,但该IP地址实际上已分配给一组以上的物理服务器。
您可以在这里阅读更多有关它的信息http://en.wikipedia.org/wiki/Anycast
第二种技术再次涉及AnyCast,但是这次,任播的IP地址范围是指我们的名称服务器本身。由于名称服务器也将仅从其最近的客户端请求(由BGP的魔力决定),因此名称服务器本身可以返回逻辑上本地的IP地址。
谷歌的l.google.com域就是一个例子。
来自澳大利亚的房东
crimson:~ dave$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-notmumbai.l.google.com.
www-notmumbai.l.google.com has address 66.249.89.99
www-notmumbai.l.google.com has address 66.249.89.147
www-notmumbai.l.google.com has address 66.249.89.103
www-notmumbai.l.google.com has address 66.249.89.104
来自美国的一位主持人
[dave@odessa ~]$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.95.99
www.l.google.com has address 74.125.95.147
www.l.google.com has address 74.125.95.104
www.l.google.com has address 74.125.95.106
www.l.google.com has address 74.125.95.105
www.l.google.com has address 74.125.95.103
因此,CNAME www.google.com
解析为www.l.google.com
,但是当您解析时,根据您的位置,您的客户端会收到另一组IP地址。这是因为接收到请求的名称服务器是相对于客户端www.l.google.com
的本地名称服务器。
如果您只想本地化亚洲,北美和欧洲的服务器,则可以决定自己运行webapp和DNS。
借助DNS,您可以使用诸如水平分割DNS方法之类的方法,该方法既可以通过DNS服务器的集成功能(它们可以称为GeoDNS)来实现,也可以通过将不同IP地址范围重定向到不同运行状态的防火墙来实现DNS服务器实例(您可以在本地计算机上运行该服务器的多个不同副本,这些副本将侦听不同的本地IP地址)。
通过回复来自RIPE和AfriNIC IP地址的DNS请求并A
记录您在欧洲的主机,来自APNIC的请求(在亚洲的主机)以及来自IP地址的请求,您可能会在大约90%的情况下获得预期的结果。由ARIN,LACNIC和其余/ 8地址空间管理的/ 8块以及您在北美的服务器记录。在某些情况下,这将导致错误的结果(欧洲和北美之间共享一些/ 8块,任播地址空间等),但是最糟糕的情况是受影响的一方会有额外的延迟,因此,不应没什么大不了的。A
(是的,应该有一种方法可以使这些事情变得更容易,但是到目前为止,似乎还没有。)