gRPC microservices network backend HTTP2 distributed-systems system-design

gRPC

الـ gRPC هي اختصار لـ Google Remote Procedure Call وهي تكنولوجيا بتخلي الـ Service تقدر تنادي الـ function اللي موجودة في Service تانية كأنها بتناديها عادي كـ Function Call.

تم التحديث في 2025-06-04
تعديل على GitHub
gRPC

الـ gRPC هي اختصار لـ Google Remote Procedure Call وهي تكنولوجيا بتخلي الـ Service تقدر تنادي الـ function اللي موجودة في Service تانية كأنها بتناديها عادي كـ Function Call، حتى لو الـ Service التانية دي مكتوبة بلغة برمجة مختلفة ومش موجودة على نفس الـ Machine!

بشكل أبسط يعني لو عندنا Service مكتوبة بـ Java و Service تانية مكتوبة بـ Python، نقدر نخلي الـ Python ينادي Function في الـ Java بسهولة.


في الـ Microservices لو كل Service بدأت تعمل Generate لـ Client Library عشان الـ Services التانية تستخدمها ، هنضطر نعمل Client Library بلغات برمجة مختلفة على حسب الـ Services التانية ، وده مش حاجة منطقية! وهنا بتيجي ميزة الـ gRPC في انها بتوفر Unified Framework وكمان Language Agnostic ، فاحنا بنقول ده الـ proto اللي عاوزها والـ Client بيستعمل الـ gRPC Framework في انه يبعتلنا الـ Proto ويستقبل الـ Proto كـ Response وخلاص.

الـ gRPC بيبدأ من الـ Schema ، بـ Define الـ APIs بتاعتي وبقول دول الـ Functions اللي عندي أو الـ Contracts بتاعتي ، وبحدد الـ Request/Response كـ proto واللي هي اختصار للـ Protocol Buffer.


الـ gRPC شغال إزاي؟

الـ gRPC بيعتمد على حاجة اسمها Protocol Buffers (Protobuf). دي زي JSON كده، بس أخف وأسرع، بتستخدمها علشان توصف شكل البيانات اللي رايحة واللي جاية.

فبدل ما نبعت JSON كبير ومليان تفاصيل، بنكتب ملف .proto نعرف فيه الـ Message والـ Functions اللي عاوزين نتبادلها بين الـ Client والـ Server.

فانا بقول عندي service x بتشمل الـ functions الآتية وكل function بتستقبل proto request وبترجع proto response وخلاص كده ، فمش محتاج باه احدد الـ params دي هتيجي من الـ query , url , body والـ complexity بتاعة الـ REST

مثال سريع على ملف .proto:

syntax = "proto3";

service KitchenService {
rpc PrepareOrder (OrderRequest) returns (OrderResponse);
}

message OrderRequest {
int32 order_id = 1;
string meal = 2;
string extra = 3;
}

message OrderResponse {
bool ready = 1;
string note = 2;
}

استخدامات الـ gRPC

  • الـ Microservices: لو عندنا نظام كبير متقسم لـ Services صغيرة، الـ gRPC بيخلي الـ Services دي تتكلم مع بعض بكفاءة.
  • في الـ Mobile apps: لأنه خفيف وسريع جدًا.
  • في الـ Real-time systems: زي الـ Chat apps أو Video streaming.

في الختام

الـ gRPC بيلمع وبيظهر أكتر في الـ Micro-services Arhcitecture وخصوصا لو فيه عندنا Services كتير ويهمنا نحل مشاكل الـ Network والـ Communication بينهم وبين بعض. ودي بعض الحالات اللي ممكن يكون مميز فيها وبيستخدم فيها.


مواضيع ذات صلة
System Design & Distributed Systems

اشترك في النشرة البريدية

احصل على أحدث المحتوى والأخبار مباشرة في بريدك الإلكتروني

🔒 نحترم خصوصيتك. لن نشارك بريدك الإلكتروني مع أي طرف ثالث.