π 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 #ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
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 #ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ