πŸš€ gRPC – ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€



gRPC (Google Remote Procedure Call) – open-source Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 2015 Π³ΠΎΠ΄Ρƒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Google Π½Π° основС ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ RPC. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для мСТсистСмной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ наряду с REST, SOAP ΠΈ GraphQL.



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



Основная Ρ„ΠΈΡˆΠΊΠ° gRPC – высокая пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ сниТСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΡΠ΅Ρ‚ΡŒ. ДостигаСтся это благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ gRPC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Protoboof ΠΈ HTTP/2.



πŸ’  Protobuf (Protocol Buffers) – Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сСриализации Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Он Π½Π΅ являСтся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½ΠΈΠ·ΠΊΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΡΠ΅Ρ‚ΡŒ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ языков программирования.



πŸ’  HTTP/2 – вСрсия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ (прямо ΠΊΠ°ΠΊ Π²Π΅Π±-сокСты), Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΡ‹. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΎ нСсколько запросов, ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ°ΠΌΠΈ БообщСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Благодаря HTTP/2, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ соСдинСниС ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос, вСсь ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ происходит Π² ΠΎΠ΄Π½ΠΎΠΌ TCP-соСдинСнии



βš™οΈ ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ gRPC



ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ HTTP-Π²Ρ‹Π·ΠΎΠ², Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, сСриализуСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² сообщСнии, послС Ρ‡Π΅Π³ΠΎ ΡˆΠ»Π΅Ρ‚ сообщСниС Π½Π° сСрвСр. ΠŸΡ€ΠΈΠ½ΡΠ² Π΄Π°Π½Π½Ρ‹Π΅, сСрвСр ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, выполняСт Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΡˆΠ»Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. БСриализация ΠΈ дСсСриализация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² осущСствляСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ: stub сСрвСра ΠΈ stub ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°



Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° начинаСтся строго с ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ proto-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π² Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Для этого сущСствуСт мноТСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ, написанных Google.



🧩 GRPC прСдусматриваСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ° взаимодСйствия сСрвСра ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:



1️⃣ ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ (Unary GRPC), ΠΊΠΎΠ³Π΄Π° послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ сСрвСра.

2️⃣ ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сСрвСра, ΠΊΠΎΠ³Π΄Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запрос ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° сСрвСр прСдоставляСт ΠΏΠΎΡ‚ΠΎΠΊ сообщСний.

3️⃣ ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° сСрвСр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ сообщСний ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌ сообщСниСм.

4️⃣ Π”Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ (дуплСксный) с Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сСрвСра ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ этом случаС ΠΏΠΎΡ‚ΠΎΠΊΠΈ сообщСний ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях.



🚧 ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ



1. Высокий ΠΏΠΎΡ€ΠΎΠ³ Π²Ρ…ΠΎΠ΄Π°. ВрСбуСтся большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий для настройки ΠΈ развСртывания



2. Vendor lock. Google являСтся основным Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΈ опрСдСляСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ развития ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.



3. БлоТности балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² gRPC устанавливаСтся постоянноС соСдинСниС с ΠΎΠ΄Π½ΠΈΠΌ сСрвисом, Ρ‚ΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, сколько экзСмпляров сСрвиса Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ: запросы Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ экзСмплярами сСрвиса.



4. Π’ gRPC Π½Π΅ поддСрТиваСтся трассировка запросов



5. БообщСния Π² protoboof Π½Π΅Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹



πŸ›  ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅



gRPC слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° критичСски Π²Π°ΠΆΠ½Π° высокая пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… трСбованиях ΠΊ сСти, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ рСсурсам, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π²Π΅Ρ‰Π΅ΠΉ. Π’Π°ΠΊ ΠΆΠ΅ gRPC ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆ для общСния микросСрвисов Π² MSA.



Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ постС сравним REST ΠΈ gRPC ΠΏΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ.



πŸ“‘ ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ (тСория)

1. Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ gRPC систСмному Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ

2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gRPC ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ β€” обзорная ΡΡ‚Π°Ρ‚ΡŒΡ Highload Today

3. ОбъяснСниС Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹

4. REST vs SOAP, gRPC ΠΈ GraphQL: стили мСТсистСмной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ API β€” Babok School

5. gRPC Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: особСнности, прСимущСства ΠΈ нСдостатки β€” Π₯Π°Π±Ρ€

6. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gRPC ΠΈ Protobuf β€” Merion



πŸ“ ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ (ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°)

1. Как ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ микросСрвисы ΠΈ GRPC

2. Courier: миграция Dropbox Π½Π° gRPC

3. ΠžΠΏΡ‹Ρ‚ использования gRPC Π² ΠŸΠΎΡ‡Ρ‚Π΅ Mail.ru

4. gRPC Π² качСствС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° мСТсСрвисного взаимодСйствия. Π”ΠΎΠΊΠ»Π°Π΄ ЯндСкса



⏯ Π’ΠΈΠ΄Π΅ΠΎ

1. КакиС сСрвисы Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° gRPC? // Π”Π΅ΠΌΠΎ-занятиС курса «БистСмный Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ. AdvancedΒ»

2. gRPC для микросСрвисов ΠΈΠ»ΠΈ Π½Π΅ REST-ΠΎΠΌ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ

3. gRPC Π»ΡƒΡ‡ΡˆΠ΅ REST ? β€” Systems Education



#api #ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ