Найти тему
436 подписчиков

Постигаем gRPC


Классический вариант межсервисного взаимодействия – REST. Но есть альтернативы, например, gRPC.

В своём докладе ребята из Яндекса рассказывают об опыте применения gRPC. Сначала, конечно, о проблемах, которые хотелось бы решить. Не просто же так тащить новую технологию в прод.

Среди хотелок автор выделяет:
– наличие клиентов на разных языках, да ещё чтобы не нужно было самим писать, а ещё чтобы клиент мог быть и синхронным, и асинхронным
– поддержка обратной совместимости сервисов, что особенно важно для множества параллельных релизов разных сервисов
– удобная обработка ошибок без нагромождения своего велосипеда
– управление таймаутами со стороны клиента, чтобы можно было отменить запрос

Далее автор переходит непосредственно к gRPC и рассказывает, как именно эти хотелки удовлетворяются.
На практическом примере показывает реализацию unary call – классического запроса/ответа и streaming для длительного соединения. Если с unary call всё ясно, то streaming может быть полезен для скачивания и загрузки больших сообщений частями или для отправки серверных пушей.

В статье затрагиваются темы: как избежать частых проблем, если вы начинаете использовать gRPC после REST, как возвращать ошибки, реализовать трассировку, отлаживать запросы и тестировать вызовы клиентов.

Если первая статья больше концептуальная, то для любителей питона есть замечательное практическое руководство Python Microservices With gRPC. Можно брать и делать. Сначала рассматриваются теоретические вопросы микросервисов, gRPC, когда применять. Далее практика – реализация микросервиса, деплой и тестирование. В конце приводится набор практик, которые стоит применять при использовании gRPC.

Если понравился пост, пожалуйста, пробивайте палец вверх:)
#skills
1 минута
313 читали