Руководство для консула, почему консульская служба занимает больше времени, чем ожидалось? - PullRequest
0 голосов
/ 04 июня 2018

Я в процессе интеграции системы обнаружения.Я использую консульство для служб Python и consul-API в службах Java.В моей архитектуре я запрашиваю сервис каждый раз, прежде чем сделать запрос. Однако это добавляет 3-4 миллисекунды к фактическому вызову.Вместо каталога / агента API я использую API здоровья, чтобы получить исправный экземпляр службы и использую далее.Я просто хочу правильный способ сделать это и хотел сократить время выборки (3-4 миллисекунды).Обратите внимание, что я не использую докер.Вот код для получения службы.

    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

1 Ответ

0 голосов
/ 06 июня 2018

дополнительная задержка связана с вызовом API, который вы делаете Консулу. Я могу придумать несколько способов улучшить это -

  1. кэшировать исправные URL-адреса и периодически их обновлятьни в случае сбоя запроса (требуется механизм повтора)

  2. использовать поддерживаемые консулом клиентские библиотеки балансировки нагрузки, которые уже его реализовали

  3. использоватьпрокси-сервер с поддержкой прокси, например https://linkerd.io/

  4. использует интерфейс DNS Consul и кэширование DNS (требует, чтобы ваши службы прослушивали известные порты или использовалиDNS-запросов SRV)

...