gRPC

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

  • Помимо batch-запросов (это ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ запросы, Ρ‚Π°ΠΊ сдСлано Π² JSON RPC), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стриминговыС запросы (ΠΊΠ°Π½Π°Π» Π½Π΅ закрываСтся сСтСвой, запросы ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ΡΡ)

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ² ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ запросов Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (Π² HTTP Π½Π°ΠΌ самим приходится ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ всякиС Request ID, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Ρ€Π΅Ρ‚Ρ€Π°Π΅Π² ΠΈ Ρ‚ΠΏ). А Ρ‚ΡƒΡ‚ пСрСдаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ информация

  • Для описания Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° сообщСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ IDL. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ наши сообщСния ΠΊΠ°ΠΊ Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· json ΠΈΠ»ΠΈ proto).

ΠšΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ

ΠŸΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ² с описаниСм gRPC-сСрвисов

web/
    account/
        some.proto
    admin/
        some.proto
    ...

НастраиваСм срСду (python)

$ python3 -m venv .venv
$ source .venv/bin/activate

$ python -m pip install grpcio
$ python -m pip install grpcio-tools

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ python-ΠΊΠΎΠ΄ (pb2 ΠΈ grpc ΠΊΠΎΠ΄)

ЗапускаСм ΠΊΠΎΠ΄

gRPC ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹

Достаточно слоТно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ gRPC API, Π½Π΅ имСя исходных proto-Ρ„Π°ΠΉΠ»ΠΎΠ².

На сколько этот gRPC ΠΊΠ»ΠΈΠ΅Π½Ρ‚ унивСрсалСн? https://github.com/ktr0731/evans

grpc_cli β€” Π°Π½Π°Π»ΠΎΠ³ curl для gRPC-сСрвисов

Π•ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ cli evans

Аналог Postman/Insomnia β€” BloomRPC (Π½ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Postman ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π² gRPC).

grpcdump β€” для ΠΎΡ‚Π»ΠΎΠ²Π° ΠΈ дСкодирования gRPC запросов:

Last updated