Sobes.tech
Middle

gRPC эмне?

sobes.tech AI

AIден жооп

gRPC — бул жогорку ишенимдүү, ачык булак коддуу RPC (Remote Procedure Call) чөйрөсү, Google тарабынан иштелип чыккан, таралган колдонмолор жана микросервистер түзүү үчүн. Ал HTTP/2 протоколуна негизделген жана Protocol Buffers (Protobuf) интерфейс сүрөттөө тили жана сериализация механизми катары колдонулат:

gRPCнин негизги өзгөчөлүктөрү:

  • HTTP/2: HTTP/2нин артыкчылыктарын колдонуу, мисалы, суроо-талаптарды мультиплексдөө, башталыштарды кысуу жана эки тараптуу агым өткөрүү, бул жөнөкөй кардар-сервер протоколдорго салыштырмалуу жогору иштөө мүмкүнчүлүгүн камсыз кылат:
  • Protocol Buffers (Protobuf): Маалыматтарды сүрөттөө тили, ал маалыматтарды түзүүгө жана сериализация жана десериализация үчүн кодду генерациялоого мүмкүндүк берет. Protobuf маалыматтын өлчөмү жана ылдамдыгы боюнча эффективдүү:
  • Агымдуу өткөрүү (Streaming): Төрт түрдүү агымдуу өткөрүүнү колдойт:
    • Unary: Классикалык RPC (бир суроо - бир жооп):
    • Server-side Streaming: Кардар суроо жиберет, сервер агым түрүндө жооп берет:
    • Client-side Streaming: Кардар агым түрүндө билдирүүлөрдү жиберет, сервер бир билдирүү менен жооп берет:
    • Bidirectional Streaming: Кардар жана сервер бир убакта билдирүүлөр агымдарын алмашат:
  • Көп тилдүү: Protobuf аркылуу gRPC көп программалоо тилдеринде кардар жана сервер кодун түзөт:
  • Код генерациясы: .proto файлы негизинде кардар жана сервер үчүн автоматташтырылган код түзүү, бул кол менен коддоонун санын азайтат:
  • Метадата: Суроолор жана жооптор менен бирге метадаталардын өткөрүлүшүн колдоо:
  • Интерцепторлор (Interceptors): Суроолор жана жоопторду кармоого мүмкүнчүлүк берүү, кошумча логика аткаруу (мисалы, журналга жазуу, аутентификация):

gRPC кантип иштейт:

  1. API кызматын Protocol Buffers тилинде .proto файлы аркылуу аныктайт:
  2. Керектүү тилде кардар жана сервер коду protoc компилятору аркылуу генерацияланат:
  3. Сервер генирацияланган кызмат интерфейсин ишке ашырат:
  4. Кардар генирацияланган кодду колдонуп, кызматтын методдорун серверге чакырат:

proto файлынын мисалы:

syntax = "proto3";

package greeting;

// Кызматтын аныктамасы
service Greeter {
  // Юниар RPC-метод
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  // Сервер тараптуу агымдуу метод
  rpc SayHelloStream (HelloRequest) returns (stream HelloReply) {}
}

// билдирүүлөрдүн аныктамасы
message HelloRequest {
  string name = 1; // 1-орундуу талаа
}

message HelloReply {
  string message = 1;
}

REST менен салыштыруу (JSON/XML колдонуп):

өзгөчөлүк gRPC (Protobuf) REST (JSON/XML)
Транспорт протокол HTTP/2 HTTP/1.1 же HTTP/2
Маалымат сериализациясы Protobuf (бинардык) JSON, XML (тексттик)
Ишке ашыруу эффективдүүлүгү Жогорку (бинардык формат, HTTP/2) Төмөн (тексттик формат, кошумча чыгымдар)
API сүрөттөө тили Protocol Buffers (.proto файлдар) OpenAPI/Swagger
API келишими Катуу, Protobuf негизделген Азыркыга караганда жумшактык бар
Маалымат типизациясы Катуу (аныкталган .proto-да) Жумшак (жараянда текшерилет)
Код генерациясы Ички (стандарттык) Чет тил инструменттерин талап кылат
Агымдуу өткөрүү Ички (стандарттык) Кошумча механизмдер талап кылынат (мисалы, WebSockets)
Окуулушу оңой .proto жок болсо кыйын болот Адамга оңой окуу үчүн

gRPC жакшы таралуучу системаларда, микросервистерде, чоң көлөмдөгү маалыматтарды өткөрүүдө, натыйжалуулук жана катуу API келишими маанилүү болгон учурларда колдонулат.