Nginx может быть не лучшим выбором для сервисной сетки, envoy

Nginx Service Mesh

задний план

Несколько дней назад в нескольких публичных аккаунтах появилась такая статья: «Service Mesh Tool: NGINX будет поддерживать gRPC» и даже утверждалось, что nginx — первый прокси с поддержкой grpc. Когда я читаю эти статьи, мне всегда хочется что-то сказать о развитии интернета в Китае.

В последние годы отечественная интернет-индустрия быстро изменилась. Во-первых, это микросервисы.В то время все основные офлайн-коммуникационные встречи в Китае были посвящены обмену информацией о различных структурах микросервисов, таких как майнинговые карьеры зоопарка, двенадцать элементов микросервисов, управление сервисами и так далее. Тогда есть индустрия прямых трансляций, В это время офлайн-встреча превращается в открытие видео за считанные секунды, как подключиться к микрофону, оптимизация CDN и так далее. К этому спешат не только технологи-практики, но и крупные инвесторы вкладывают в это деньги, и не хотят упускать такую ​​возможность. К прошлому году кто-то начал проповедовать, что прямые трансляции мертвы. В настоящее время я чаще слышу слово devops.В это время я могу услышать больше предупреждений о полном контроле ссылок, оптимизации apm, практике devops и так далее. В этом году ситуация еще более преувеличена. Kubernetes, блокчейн, искусственный интеллект, особенно блокчейн, до тех пор, пока компания, зарегистрированная на бирже, имеет немного концепции блокчейна, оценка будет расти и падать. Например, Xunlei, Renren.com . Далее, я боюсь, что если у компании будет немного концепции искусственного интеллекта, это будет невероятно. К концу этого года и началу следующего года я завершил эту службу Mesh обязательно станет главной темой крупных офлайн-конференций.

Хорошо, когда расцветает сотня цветов, но технологические инновации не могут быть такими быстрыми. Знаменитая теория 10 000 часов говорит нам, что одного года недостаточно для освоения технологии. Я думаю, что домашняя интернет-атмосфера немного порывиста, что не очень хорошо, особенно для молодых людей, которые только что закончили школу.

что такое грпс

gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.

Проще говоря, grpc — это фреймворк rpc, разработанный Google, формат обмена данными основан на protobuf, а передача данных основана на http2. Google предоставляет SDK для наиболее распространенных языков.

Выбор прокси-сервера grpc: посланник

Мне посчастливилось участвовать в проекте grpc, и в то время версия была еще 0.x. Между прочим, если бы я руководил подбором, я бы не сразу согласился применять к продукту нестабильное стороннее ПО, даже если это абсолютно необходимо, я должен глубоко в нем разбираться. Я наступил на слишком много ям, подобных этой.

В то время, чтобы сделать балансировку нагрузки grpc, я внимательно изучил официальную документацию grpc, и разработчики google упомянули два прокси, nghttpx и envoy.

nghttpx — это прокси, основанный на nghttp2, nghttp2 — это библиотека http 2. Как упоминалось выше, grpc в основном основан на обмене данными по http2, поэтому, если вы хотите быть прокси для grpc, вы должны поддерживать http2 внизу, поэтому недавно выпущенный nginx1.13 поддерживает только прокси grpc, так как старая версия nginx не поддерживает протокол http2.

Для хорошей балансировки нагрузки grpc недостаточно поддерживать протокол http2.Должен быть базовый алгоритм балансировки нагрузки.Например, наше приложение распределяется по разным серверам в соответствии с запрошенной информацией. Чтобы реализовать такую ​​функцию, ее необходимо настроить на основе Python или других языков сценариев.

И envoy в этом отношении намного сильнее, он поддерживает различные алгоритмы балансировки нагрузки: циклический алгоритм, взвешенный наименьший запрос, кольцевой хеш, маглев, случайный, исходный пункт назначения. Для примера, который я упомянул выше, вам нужно только поместить запрошенное поле в контекст grpc, а затем установить кольцевой хэш сервера в соответствии с этим полем при настройке envoy, и вы закончили с несколькими словами конфигурации.

Конечно, возможности envoy не ограничиваются разнообразием алгоритмов балансировки нагрузки. Он также имеет следующие преимущества:

  1. Открытый исходный код, основанный на Modern C++11
  2. Поддержка прокси уровня 3, уровня 4, уровня 7, поддержка HTTP-маршрутизации
  3. Обнаружение службы поддержки, проверка работоспособности.
  4. Поддержка монгодб, dynamodb
  5. Несколько алгоритмов балансировки нагрузки
  6. Динамическая конфигурация. nginx не поддерживает.

Эти функции с открытым исходным кодом и бесплатны, но nginx не обязательно, многие расширенные функции необходимо покупать и использовать nginx plus.

Насчет проверки работоспособности хотелось бы сказать еще кое-что, проверка работоспособности многих платформ заключается в том, чтобы проверить, отвечает ли определенный http-интерфейс или установлено ли соединение tcp, но это не означает, что служба работает нормально, т.к. так же, как открытие потока для пульса. , envoy поддерживает проверку работоспособности на уровне обычной отправки и получения данных.

Суммировать

Поэтому nginx обречен быть не лучшим выбором для сервисной сетки, потому что envoy предоставляет более богатые функции, чем он. Тем не менее, многие компании все еще могут использовать nginx, потому что технология эксплуатации и обслуживания nginx относительно зрелая, а информации в Интернете много.

Google и IBM также разработали фреймворк сервисной сетки Istio на основе envoy.Я представлю istio, когда у меня будет время.


Ссылка на эту статью:Woohoo.сервер coder.com/2018/03/27/…