领事指南,为什么领事服务比预期花费更多时间?

Guide for consul, why consul service takes more time then expected?

我正在整合发现系统。我在 python 服务中使用 consulate,在 java 服务中使用 consul-api。 在我的架构中,我每次都在请求之前请求服务。 但是实际调用会增加 3-4 毫秒。代替 catalog/agent 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

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

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

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

  3. 使用 consul 感知代理,例如 https://linkerd.io/

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