【问题标题】:Distributed systems and choosing the nearest datacenter分布式系统和选择最近的数据中心
【发布时间】:2018-05-10 11:20:16
【问题描述】:

我想知道如何始终将请求定向到最近的数据中心。一开始我想创建一个基于 IP 地址计算区域的应用程序,但后来我意识到这没有用,因为我们仍然不知道如何调用最近的应用程序......负载均衡器仅用于路由向负担最小的机器发出请求。

【问题讨论】:

  • 您为客户端使用什么技术栈?为什么你想要最近的数据中心——性能?法律因素?
  • 延迟问题。客户是什么意思?

标签: database request distributed-system


【解决方案1】:

其中一种方法是在您的 DNS 服务器中使用 GoIP,例如,如果您想托管和维护自己的 DNS 服务器,则可以使用 powerdns

区域文档中的示例:

domains:
- domain: geo.example.com
  ttl: 30
  records:
    geo.example.com:
      - soa: ns1.example.com hostmaster.example.com 2014090125 7200 3600 1209600 3600
      - ns: ns1.example.com
      - ns: ns2.example.com
      - mx: 10 mx.example.com
    fin.eu.service.geo.example.com:
      - a: 192.0.2.1
      - txt: hello world
      - aaaa: 2001:DB8::12:34DE:3
  services:
    service.geo.example.com: '%co.%cn.service.geo.example.com'

它的工作方式是从发出请求的 IP 中找到国家代码(同时解析为geo.example.com),然后将定义的记录发送到该区域。

在示例中,如果您的用户在芬兰并尝试访问geo.example.com,则返回的 IPv4 将是 192.0.2.1 和 IPv6 2001:DB8::12:34DE:3

如果您使用的是 AWS,则可以使用 route53 服务。

另一种方法是使用 CDN,例如,您可以尝试Cloudflare Load Balancing 选项。

【讨论】:

    【解决方案2】:

    如果您只关心延迟,那么地理区域并不是影响到达您的服务器所产生的延迟的唯一因素。一种合理的方法是简单地尝试所有服务器,看看哪一个响应最快。这会给你带来其他东西,包括在服务器宕机时切换服务器的能力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 2023-01-05
      • 1970-01-01
      • 2020-11-22
      • 2021-05-02
      • 1970-01-01
      • 2020-02-21
      • 2017-11-20
      相关资源
      最近更新 更多