JUGNsk Meetup#9. Дмитрий Пышкин: "Почему именно сейчас gRPC"
Доклад об альтернативах RESTу, о проблемах встраивания gRPC в типовую микросервисную архитектуру, об изменении подхода передачи данных поверх TCP/IP и что если копнуть глубже, то можно наткнуться на IDL.
1995 году мы были одними из первых, кто начал оказывать брокерские услуги в России. Уже больше 20 лет мы каждый день работаем над тем, чтобы вам было проще и удобнее управлять своими финансами. БКС Брокер
вокруг одной бизнес- функции и могут быть развернуты независимо с помощью автоматизированного механизма деплоя. Существует минимальный уровень централизованного управления микросервисами, которые могут быть написаны на разных языках программирования и использовать разные технологии хранения данных." М. Фаулер 15
ANALYSIS ELK SYSTEM MONITOR GRAFANA DISCOVERY Spring cloud Eureka / CONSUL CONFIG SERVICE Spring cloud config AUTH SERVICE Keycloak Quotes stream Kubernetes (OpenShift) Quotes store 16 http(REST) API GATEWAY ZUUL gRPC
21 NettyServerBuilder Инициализация builder ServerImpl Вставка сгенерированного сервиса в stubs и его регистрация в service registry NettyServer Старт HTTP/2 сервера и обработка входящих запросов
и вызов handler NioByteUnsafe Чтение бинарных данных из сокета NioEventLoop Получение данных по каналу через сокет run() 26 Http2ConnectionHandler FrameListener Сериализация и создание HTTP/2 заголовков и тела для отправки в сеть ServiceHandler Обработка запроса
stub. Резолв хоста через DnsNameResolver и через LoadBalancer выбор одного из доступных gRPC серверов Netty Transport Base HTTP/2 Сериализация protobuf и наполнение HTTP/2 сообщения для отправки в стрим gRPC серверу Network Protobuf Marshaller Отправка данных в сеть
final class Metadata Interface NameResolver DNS aspect Interface NameResolverProvider Abstract class GeneratedMessageV3 Interface Message Data transfer aspect Interface StreamObserver Interface Stream Abstract class Channel ? 34
производительный и достаточно гибкий; + 1) генерация большого количества клиентского / серверного кода для stubs; 2) приходится сталкиваться с проблемами при встраивании в существующую архитектуру. —