gRPC
Тема дорожной карты · Компьютерные сети
gRPC — это высокопроизводительный открытый RPC-фреймворк, разработанный Google, который использует HTTP/2 в качестве транспорта и Protocol Buffers (protobuf) как язык описания интерфейса и формат сериализации. gRPC обеспечивает строго типизированные контракты и кодогенерацию для множества языков программирования, что делает его идеальным выбором для микросервисных архитектур и систем с высокими требованиями к задержке и производительности. Поддержка четырёх паттернов взаимодействия (унарный, серверный стриминг, клиентский стриминг и двунаправленный стриминг) позволяет гибко настраивать взаимодействие между сервисами.
Как это работает
gRPC использует HTTP/2 (один TLS-соединение, мультиплексированные потоки, HPACK сжатие заголовков) и HTTP/3 (QUIC, отсутствие HOL блокировки) для обеспечения современного веб-соединения. WebSockets обеспечивают full-duplex по long-lived HTTP-upgraded connection (чаты, live обновления). SMTP, IMAP и POP3 используются для электронной почты. FTP устарел (не безопасен); SFTP (поверх SSH) — современный метод передачи файлов. SSH используется для удаленного доступа к shell и создания туннелей. gRPC (HTTP/2 + protobuf) обеспечивает типизированные, эффективные RPC между сервисами. Выбор протокола зависит от конкретного сценария: HTTP для браузеров и REST, gRPC для внутренних сервисов, WebSockets для реального времени и двунаправленного обмена данными.
Когда применять
gRPC следует использовать для внутренних сервисов, где требуется высокая производительность и строгость типизации. Всегда используйте TLS (HTTPS, SSH, SFTP, WebSockets-WSS) для обеспечения безопасности соединений. Не переизобретайте существующие протоколы: HTTP для доступа к ресурсам, WebSocket для потокового обмена данными, gRPC для внутренних сервисов, SSH для удаленного доступа и операций. Для электронной почты лучше интегрироваться с провайдерами электронной почты (SES, SendGrid) вместо использования собственного SMTP.
Типичные ошибки
Типичные ошибки при использовании gRPC включают использование plain FTP (пароли передаются в открытом виде), SSH root login с паролем (используйте ключи и отключите root доступ), WebSocket соединения без heartbeat (соединения-зомби, которые никогда не закрываются). Кроме того, использование gRPC поверх HTTP/1 не работает, так как требуется HTTP/2.