【问题标题】:Guide for consul, why consul service takes more time then expected?领事指南,为什么领事服务需要比预期更多的时间?
【发布时间】:2018-06-04 08:13:09
【问题描述】:

我正在整合发现系统。我在 python 服务中使用 consulate,在 java 服务中使用 consul-api。 在我的架构中,我每次都在提出请求之前请求服务。 但是它会增加 3-4 毫秒到实际通话。代替目录/代理 api,我使用健康 api 来获取健康的服务实例并进一步使用。 我只是想以正确的方式这样做,并想减少此获取时间(3-4 毫秒)。请注意,我没有使用 docker。这是获取服务的代码。

    service = self.consul_client.health.service(service_id=service_id, passing=True)
    if not service:
        return None
    service = service[0]['Service']
    service_url = str(service['Address'])+":"+str(service['Port'])
    if "http" not in service_url:
        service_url = "http://" + service_url
    return service_url

【问题讨论】:

    标签: consul service-discovery


    【解决方案1】:

    额外的延迟是由于您对 Consul 进行的 API 调用造成的。我想不出几种方法来改善这一点 -

    1. 缓存健康的 url 并定期更新它们,即使请求失败(需要重试机制)

    2. 使用已经实现的由 consul 支持的客户端负载平衡库

    3. 使用可感知领事的代理,例如https://linkerd.io/

    4. 使用 Consul 的 DNS interfaceDNS caching(要求您的服务将侦听已知端口或使用 SRV DNS 查询)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2021-01-18
      相关资源
      最近更新 更多