Hacker News

gRPC: Үйлчилгээний тодорхойлолтоос утас формат хүртэл

gRPC: Үйлчилгээний тодорхойлолтоос утас формат хүртэл Энэхүү хайгуул нь grpc-ийг судалж, түүний ач холбогдол, боломжит нөлөөллийг судалж байна. Хамгаалагдсан үндсэн ойлголтууд Энэхүү агуулга нь: Үндсэн зарчим ба онолууд Дадлага хийх...

1 min read Via kreya.app

Mewayz Team

Editorial Team

Hacker News

gRPC: Үйлчилгээний тодорхойлолтоос утас формат руу

gRPC нь өндөр хүчин чадалтай, нээлттэй эхийн алсаас ажилладаг процедурын дуудлагын (RPC) тогтолцоо бөгөөд үйлчилгээний хатуу тодорхойлолтод зориулж Протокол буфер, үр ашигтай хоёртын дамжуулалтад HTTP/2 ашиглан микро үйлчилгээнүүд хэрхэн харилцахыг өөрчилдөг. Анх Google-д бүтээгдсэн бөгөөд одоо CNCF-ээр төгссөн төсөл бөгөөд gRPC нь Netflix, Dropbox, Cisco зэрэг компаниудын дотоод үйлчилгээний сүлжээнээс эхлээд олон нийтэд зориулсан API хүртэл бүх зүйлийг эрчим хүчээр хангадаг орчин үеийн тархсан системүүдийн үндэс болсон.

138,000 гаруй хэрэглэгчдэд үйлчилдэг Mewayz-ийн 207 модультай бизнесийн үйлдлийн систем гэх мэт нарийн төвөгтэй платформуудыг бүтээж буй багуудын хувьд gRPC-ийн .proto файлаас утсан дээрх байт хүртэлх замыг ойлгох нь найдвартай байдал, хөгжүүлэгчийн бүтээмжийг алдагдуулахгүйгээр өргөтгөх системийг зохион бүтээхэд зайлшгүй шаардлагатай.

.

gRPC гэж юу вэ, орчин үеийн архитектурт яагаад чухал вэ?

gRPC нь "gRPC Remote Procedure Call" гэсэн үгийн товчлол бөгөөд түүний онцгой анхаарал хандуулдаг рекурсив товчлол нь: алсын үйлчилгээний дуудлагыг орон нутгийн функцын дуудлагатай адил байгалийн мэдрэмжтэй болгодог. HTTP/1.1 дээр JSON-д тулгуурладаг REST API-аас ялгаатай нь gRPC нь протоколын буфер (protobuf)-ыг Интерфэйсийн тодорхойлолтын хэл (IDL) болон цуваа хэлбэрт оруулах форматыг HTTP/2-той тээвэрлэх протокол болгон ашигладаг.

Энэ хослол нь хэмжигдэхүйц давуу талыг өгдөг. Протобуф мессежүүд нь ихэвчлэн JSON-ийн эквивалентаас 3-10 дахин бага байдаг ба цуваа нь 20-100 дахин хурдан байдаг. HTTP/2 multiplexing нь шугамын толгойг блоклохыг арилгаж, нэг TCP холболтоор олон зуун RPC зэрэгцэн ажиллах боломжийг олгодог. Олон арван өөр хоорондоо холбогдсон модулиудыг удирддаг платформуудын хувьд эдгээр гүйцэтгэл нь эрс нэмэгддэг.

Энэ хүрээ нь нэгдмэл (нэг хүсэлт, нэг хариулт), сервер дамжуулалт, үйлчлүүлэгчийн дамжуулалт, хоёр чиглэлтэй дамжуулалт гэсэн дөрвөн харилцааны загварыг дэмждэг. Энэхүү уян хатан байдал нь gRPC-ийг энгийн CRUD үйлдлээс эхлээд бодит цагийн өгөгдлийн хангамж, урт хугацааны үйл явдлын дамжуулалт хүртэл бүх зүйлд тохиромжтой болгодог.

Үйлчилгээний тодорхойлолт хэрхэн гүйцэтгэх код болдог вэ?

gRPC амьдралын мөчлөг нь .proto файлаас эхэлдэг бөгөөд энэ нь хэл хамааралгүй схемд таны үйлчилгээ, арга, мессежийн төрлийг тодорхойлдог гэрээ юм. Энэ аялал алхам алхмаар харагдаж байна:

  1. Схем зохиох: Та үйлчилгээний интерфэйсүүд болон мессежийн бүтцийг Protocol Buffers v3 синтакс дээр тодорхойлж, талбарын төрөл, тоо, RPC аргын гарын үсгийг тодорхой хүсэлт, хариултын төрлөөр зааж өгдөг.
  2. Код үүсгэх: protoc хөрвүүлэгч нь тухайн хэлний тусгай gRPC залгаасуудтай хослуулан таны зорилтот хэл болох Go, Python, Java, Rust, C++ эсвэл 12+ дэмжигдсэн хэл дээр серверийн үндсэн ангиудыг үүсгэдэг.
  3. Серверийн хэрэгжилт: Хөгжүүлэгчид үүсгэсэн серверийн интерфэйсийг хэрэгжүүлж, бизнесийн логикийг бөглөж, уг хүрээ нь холболтын удирдлага, урсгал болон протоколын дэлгэрэнгүй мэдээллийг зохицуулдаг.
  4. Үйлчлүүлэгчийн дуудлага: Үүсгэсэн үйлчлүүлэгчийн бүдүүвч нь эцсийн хугацаа, мета өгөгдлийн тархалт, цуцлах болон автоматаар дахин оролдох бодлого зэрэгт суулгагдсан дэмжлэг бүхий төрөлд аюулгүй аргын дуудлага өгдөг.
  5. Утас дамжуулах: Дуудлага хийх үед хүсэлтийн мессежүүд нь 5 байт gRPC толгойгоор (шахалтын туг + мессежийн урт) хүрээлэгдсэн авсаархан хоёртын протобуф кодчилол болгон цувуулж, HTTP/2 DATA фреймээр дамждаг.

Үндсэн ойлголт: gRPC-ийн хамгийн давуу тал бол түүхий хурд биш - энэ бол хэрэгжүүлэх боломжтой гэрээ юм. .proto файл нь нэгэн зэрэг баримтжуулалт, баталгаажуулалтын давхарга, код үүсгэгчийн үүрэг гүйцэтгэдэг бөгөөд сул бичигдсэн REST API-г үүсгэдэг нэгдлийн алдааны бүх ангиллыг арилгадаг. Таны платформ найдвартай харилцах шаардлагатай 207 модультай бол тэр гэрээ таны хамгийн үнэ цэнэтэй архитектурын хөрөнгө болно.

gRPC дуудлагын үед утсанд юу тохиолддог вэ?

Утасны форматыг ойлгох нь gRPC дибаг хийх болон гүйцэтгэлийн тохиргоог арилгах болно. Үйлчлүүлэгч RPC-г дуудах үед HTTP/2 дээр дараах дараалал үүснэ:

Үйлчлүүлэгч HTTP/2 холболтыг нээж (эсвэл дахин ашигладаг) ба аргын зам (/package.Service/Method), агуулгын төрөл (application/grpc), завсарлага болон дурын мета өгөгдлийг агуулсан HEADERS хүрээг илгээдэг. Үүний дараа цуваажуулсан протобуфын ачааллыг агуулсан нэг буюу хэд хэдэн DATA фрейм дагалдаж, тус бүр нь 5 байт урттай угтвар зурвасын фреймтэй угтвартай.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Сервер хүсэлтийг боловсруулж, өөрийн HEADERS фреймийг буцаадаг ба дараа нь ижил хүрээний протоколыг ашиглан хариултын DATA хүрээг буцаана. Дуудлага нь чухал grpc-status код болон алдааны дэлгэрэнгүй мэдээллийг авах боломжтой grpc-message зэрэг арын мета өгөгдлийг агуулсан HEADERS фреймээр дуусна.

Энэ загвар нь хүчирхэг чадавхийг идэвхжүүлдэг: олон талт холболт нь холболтын маргаангүйгээр RPC-ийг хооронд нь холбох боломжийг олгодог, урсгалын удирдлага нь хурдан үйлдвэрлэгчид удаан хэрэглэгчдийг хэт их ачаалахаас сэргийлдэг, толгой хэсгийг шахах (HPACK) нь микро үйлчилгээний харилцаанд түгээмэл тохиолддог давтагдах мета өгөгдлийн загварт зориулсан ачааллыг бууруулдаг.

Багууд gRPC нэвтрүүлэхэд стратегийн хувьд хэрхэн хандах ёстой вэ?

gRPC-ийг батлах нь бүгдийг эсвэл юу ч биш гэсэн шийдвэр биш юм. Амжилтанд хүрсэн багууд ихэвчлэн прагматик замаар явдаг. Төгсгөлийн хоёр цэг нь таны хяналтанд байдаг бөгөөд гүйцэтгэлийн үр өгөөж нь хамгийн тод илэрдэг дотоод үйлчилгээ хоорондын харилцаа холбоог эхлүүлээрэй. JSON API-г хүлээж буй гадаад хэрэглэгчдэд REST төгсгөлийн цэгүүдийг харуулахын тулд gRPC-Gateway эсвэл Envoy кодчилолыг ашиглана уу. Төвлөрсөн прото бүртгэлд эрт хөрөнгө оруулалт хийгээрэй — Buf зэрэг хэрэгслүүд нь бүдүүвч, өөрчлөлтийг илрүүлэх, удирдсан код үүсгэх боломжийг олгодог бөгөөд энэ нь багуудын хооронд схемийн шилжилт хөдөлгөөнөөс сэргийлдэг.

Ажиглахуйц байдалд анхаарлаа хандуулаарай. gRPC interceptors (middleware) нь тархсан мөрдөх зорилгоор OpenTelemetry-тэй цэвэрхэн нэгдсэн бөгөөд стандарт төлөвийн кодууд нь хяналтын самбарт сайн тусдаг. HTTP/2-ын байнгын холболтууд нь энгийн TCP ачааллын тэнцвэржүүлэгчийн цаана замын хөдөлгөөний жигд бус хуваарилалтыг үүсгэж болзошгүй тул ачааллыг тэнцвэржүүлэхийн тулд уламжлалт L4 хандлагыг бодвол клиент талд эсвэл проксид суурилсан L7-г тэнцвэржүүлэхийг илүүд үзээрэй.

Байнга асуудаг асуултууд

gRPC REST API-г бүхэлд нь сольж чадах уу?

Бүх хувилбарт биш. gRPC нь гүйцэтгэл, төрлийн аюулгүй байдал, дамжуулалт чухал байдаг дотоод үйлчилгээ хоорондын харилцаа холбоогоороо давуу юм. Гэсэн хэдий ч REST нь хөтчүүд, гуравдагч талын интеграци, хүний ​​унших боломжтой ачаалал нь дибаг хийхийг хялбаршуулдаг орчинд ашигладаг олон нийтэд зориулсан API-д илүү тохиромжтой хэвээр байна. Олон үйлдвэрлэлийн архитектурууд API гарцаар дамжуулан REST эсвэл GraphQL-г гаднаас нь харуулахын зэрэгцээ gRPC-г дотооддоо ашигладаг.

Үйлчилгээ хөгжих үед gRPC буцаах нийцтэй байдлыг хэрхэн зохицуулдаг вэ?

Протоколын буфер нь схемийг өөрчлөхөд зориулагдсан. Та одоо байгаа харилцагчдыг таслахгүйгээр өвөрмөц талбарын дугаар бүхий шинэ талбаруудыг нэмж болно - үл мэдэгдэх талбаруудыг чимээгүйхэн үл тоомсорлодог. Гэсэн хэдий ч, та хэзээ ч талбарын дугаарыг дахин ашиглах, талбарын төрлийг өөрчлөх, бусад үйлчилгээнээс хамаардаг талбаруудыг устгах ёсгүй. Buf-ийн эвдэрсэн өөрчлөлт илрүүлэгч зэрэг хэрэгслүүд нь CI дамжуулах хоолойн аюулгүй байдлын шалгалтыг автоматжуулж, үл нийцэх өөрчлөлтүүдийг үйлдвэрлэлд хүрэхээс өмнө илрүүлдэг.

gRPC-ийг өргөн цар хүрээтэй нэвтрүүлэхэд хамгийн том сорилтууд юу вэ?

Хамгийн нийтлэг гурван бэрхшээл бол хоёртын ачааллыг дибаг хийх (grpcurl болон gRPC-Web DevTools гэх мэт хэрэгслүүдээр шийдэгддэг), хөтчийн HTTP/2 трейлертэй нийцэхгүй байх (gRPC-Web эсвэл Connect протоколоор хаяглагдсан) болон байнгын HTTP/2 холболтоор ачааллыг тэнцвэржүүлэх нарийн төвөгтэй байдал юм. Тус бүр нь боловсронгуй шийдэлтэй боловч багууд ялангуяа зөвхөн REST-д суурилсан архитектураас шилжиж байгаа тохиолдолд суралцах муруйгаа төлөвлөх ёстой.

Өөр хоорондоо холбогдсон олон арван үйлчилгээ бүхий платформыг бий болгохын тулд хурдан, төрөлд аюулгүй, хувьсалд зориулан бүтээгдсэн холбооны дэд бүтцийг шаарддаг. Та дотоод API зохион бүтээж байгаа эсвэл одоо байгаа микро үйлчилгээний сүлжээг өргөжүүлж байгаа эсэхээс үл хамааран gRPC нь найдвартай үйлчилгээний харилцааны үндэс суурийг бүрдүүлдэг.

Таны бизнесийн үйл ажиллагааг оновчтой болгоход бэлэн үү? Mewayz нь төслийн удирдлагаас нэхэмжлэх, CRM-аас хүний нөөц хүртэлх 207 нэгдсэн модулийг нэг бизнесийн үйлдлийн системд авчирдаг бөгөөд сард ердөө 19 доллараас эхэлдэг. Үнэгүй туршилтаа app.mewayz.com-оос эхлүүлж, gRPC-ийн шийдвэрлэхээр бүтээгдсэн нэгдмэл байдлын асуудлуудыг бүгдийг нэг дор платформ хэрхэн арилгаж байгааг харна уу.

-ээс шилжиж байгаа тохиолдолд суралцах муруйгаа төлөвлөх хэрэгтэй.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime