The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В nginx реализована поддержка gRPC

18.03.2018 10:38

Разработчики проекта nginx объявили о включении в кодовую базу модуля с реализацией прокси для протокола gRPC, позволяющего организовать работу микросервисов на различных языках программирования, которые взаимодействуют между собой при помощи универсального API. Сетевое взаимодействие в gRPC реализовано поверх протокола HTTP/2 и базируется на применении Protocol Buffers для сериализации данных. В настоящее время ведётся тестирование снапшотов nginx с поддержкой gRPC и если не будет выявлено проблем, модуль gRPC будет интегрирован в выпуск nginx 1.13.10.

Если раньше nginx мог лишь проксировать TCP-соединения gRPC, не разбирая содержимого запросов, то предложенный для тестирования модуль ngx_http_grpc_module даёт возможность управлять потоками gRPC, выделяя отдельные сервисы и методы. Например, появляется возможность маршрутизировать gRPC по разным бэкендам, в зависимости от запрошенной операции, блокировать или ограничивать интенсивность определённых вызовов, инспектировать трафик gRPC или организовывать балансировку нагрузки.

Возможна работа с использованием шифрования TLS или без (h2c cleartext), в том числе на базе nginx можно реализовать обёртку для применения шифрования и аутентификации для внутренних сервисов gRPC, изначально не поддерживающих такие возможности. Также nginx может выполнять роль межсетевого экрана для разграничения доступа или как единая точка входа, распределяющая обращение к разным сервисам и методам по связанным с ними бэкендам. Поддерживается применение различных схем балансировки нагрузки, например round-robin (круговой перебор, при котором соединения равномерно распределяются среди обработчиков), least-connections (запрос перенаправляется к менее нагруженному серверу), least_time (перенаправление на сервер, демонстрирующий наиболее высокую отзывчивость) и hash (перенаправление на основе хэша от определённого пользователем параметра, например, IP).

Для настройки проброса реализована новая директива grpc_pass и введена в обиход схема URL "grpc://". Для маршрутизации вызовов могут применяться штатные блоки location. Например:


   location /helloworld.Greeter {
       grpc_pass grpc://192.168.20.11:50051;
   }
 
   location /helloworld.Dispatcher {
       grpc_pass grpc://192.168.20.21:50052;
   }


  1. Главная ссылка к новости (https://www.nginx.com/blog/ngi...)
  2. OpenNews: Выпуск nginx 1.13.9 c поддержкой технологии HTTP/2 Server Push
  3. OpenNews: Выпуск сервера приложений NGINX Unit 0.5 с поддержкой Perl
  4. OpenNews: Yandex опубликовал статический анализатор файлов конфигурации nginx
  5. OpenNews: Google и IBM представили Istio, платформу для управления микросервисами
  6. OpenNews: Компания Google открыла код gRPC, RPC-фреймворка на основе HTTP/2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48283-grpc
Ключевые слова: grpc, nginx, proxy
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.7, Аноним (-), 13:33, 18/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Зачем микросервисы привязывать к single point of failure?
     
     
  • 2.9, Аноним (-), 14:44, 18/03/2018 [^] [^^] [^^^] [ответить]  
  • +8 +/
    кто запрещает поставить ещё один nginx?
     
     
  • 3.29, username (??), 11:29, 19/03/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Убогая система лицензирования.
     
     
  • 4.32, KonstantinB (ok), 17:43, 19/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И чем же вам помешала BSD license?
     
  • 2.31, IvAnZ (?), 13:25, 19/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    если приложение работает за reverse-proxy nginxом, то без nginx оно все-равно недоступно. Поэтому можно этим же процессом и балансировать запросы далее. А трафик между frontend с nginxом и так как-нибудь да балансируется. Так что проблем нэма
     

  • 1.13, Gemorroj (ok), 16:30, 18/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    и много кто пользует этот grpc? гошники?
     
     
  • 2.15, A.Stahl (ok), 17:31, 18/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, Л.Седоля уволили за ненадобностью и он теперь серверы админит с голодухи...
     
     
  • 3.19, Хинтон Ян Лекунович (?), 21:31, 18/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Пускай в кс:го перекатывается, там нейросети пока не тащат.
     
     
  • 4.20, Аноним (-), 21:55, 18/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В доту таки уже показали кто здесь папа, так что это не на долго.
     
  • 2.21, Аноним (-), 22:30, 18/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > и много кто пользует этот grpc? гошники?

    Скорее крестовики. У go в стандартной библиотеке есть net/rpc.

     
  • 2.26, Crazy Alex (ok), 02:38, 19/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Например, для андроид-приложения это самый удобный вариант - всё в коробке и унифицировано с гугловскими сервисами.
     
  • 2.34, Александр Владимирович (ok), 08:15, 21/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не так давно Яндекс рассказывал про историю оптимизации своего сервиса поиска. Взаимодействие части микро-сервисов у них реализовано с помощью gRPC. https://www.youtube.com/watch?v=uilqCFLlZKY
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру