Sobes.tech
Middle

gRPC nima?

sobes.tech AI

AIdan javob

gRPC — bu Google tomonidan ishlab chiqilgan, taqsimlangan ilovalar va mikroservislar yaratish uchun mo‘ljallangan yuqori samarali, ochiq manbali RPC (Remote Procedure Call) ramkasi. U transport uchun HTTP/2 protokolidan foydalanadi va interfeys ta’riflash tili va serializatsiya mexanizmi sifatida Protocol Buffers (Protobuf) dan foydalanadi.

gRPC ning asosiy xususiyatlari:

  • HTTP/2: So‘rovlarni multiplex qilish, sarlavha siqishni va ikki tomonlama oqim kabi HTTP/2 afzalliklaridan foydalanadi, bu esa oddiy klient-server protokollariga nisbatan yuqori samaradorlikni ta’minlaydi.
  • Protocol Buffers (Protobuf): Ma’lumotlarni tuzishga va turli tillarda serializatsiya va deserializatsiya qilish uchun kod ishlab chiqarishga imkon beradigan ma’lumot ta’riflash tili. Protobuf xabar hajmi va ishlov berish tezligi bo‘yicha samarali.
  • Oqim (Streaming): To‘rt turdagi oqimlarni qo‘llab-quvvatlaydi:
    • Unary: Klassik RPC (bir so‘rov — bir javob).
    • Server tomonidagi oqim: Mijoz so‘rov yuboradi, server oqim bilan javob beradi.
    • Mijoz tomonidagi oqim: Mijoz oqim bilan xabar yuboradi, server bitta xabar bilan javob beradi.
    • Ikki tomonlama oqim: Mijoz va server bir vaqtning o‘zida xabar oqimlarini almashadi.
  • Ko‘p tillilik: Protobuf yordamida gRPC ko‘p tillarda mijoz va server kodini ishlab chiqaradi.
  • Kod generatsiyasi: .proto faylga asoslangan avtomatik kod yaratish, bu esa qo‘lda yozishni kamaytiradi.
  • Metama’lumotlar: So‘rovlar va javoblar bilan birga kalit-qiymat juftlari sifatida metama’lumotlarni uzatishni qo‘llab-quvvatlaydi.
  • Interceptors: Qo‘shimcha mantiq bajarish uchun so‘rovlar va javoblarni ushlash imkoniyati (masalan, loglash, autentifikatsiya).

gRPC qanday ishlaydi:

  1. API xizmati .proto faylida Protocol Buffers tilida ta’riflanadi.
  2. protoc kompilyatori yordamida kerakli til uchun mijoz va server kodlari ishlab chiqariladi.
  3. Server ishlab chiqilgan xizmat interfeysini amalga oshiradi.
  4. Mijoz ishlab chiqarilgan koddan foydalanib, serverdagi xizmat metodlarini chaqiradi.

.proto fayl uchun misol:

syntax = "proto3";

package greeting;

// Xizmat ta’riflanishi
service Greeter {
  // Birlik RPC metodi
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  // Server tomonidagi oqim metodi
  rpc SayHelloStream (HelloRequest) returns (stream HelloReply) {}
}

// Xabarlar ta’riflanishi
message HelloRequest {
  string name = 1; // 1 raqamli maydon
}

message HelloReply {
  string message = 1;
}

REST bilan taqqoslash (JSON/XML ishlatadigan):

Xususiyat gRPC (Protobuf) REST (JSON/XML)
Transport protokoli HTTP/2 HTTP/1.1 yoki HTTP/2
Ma’lumotlarni serializatsiya qilish Protobuf (ikili) JSON, XML (matn)
Samaradorlik Yuqori (ikili format, HTTP/2) Pastroq (matn format, ortiqcha yuk)
API ta’riflash tili Protocol Buffers (.proto) OpenAPI/Swagger
API shartnoma Qattiq, Protobuf asosida Kamroq qat’iy
Ma’lumot tiplash Qattiq ( .proto da belgilangan) Zaif (ishga tushirish vaqti tekshirish)
Kod generatsiyasi Ichki Tashqi vositalar talab qilinadi
Oqim Ichki Qo‘shimcha mexanizmlar talab qilinadi (masalan, WebSockets)
O‘qilishi .proto bo‘lmasdan o‘qish qiyin Odamlar uchun oson o‘qiladi

gRPC, tarqatilgan tizimlar, mikroservislar, katta hajmdagi ma’lumotlarni uzatishda, yuqori samaradorlik va qat’iy API shartnomasi muhim bo‘lsa, juda mos keladi.