Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

10 تغريدة 48 قراءة Nov 12, 2020
إتصال الأنظمة مع بعضها عن طريق الAPIs يتم عادة بواسطة الWeb Services سواء كان من خلال REST او SOAP. هذا حل مثالي لما يكون بين Client خارجي و بين انظمة داخلية من خلال API. لكن إتصال الأنظمة الداخلية ببعضها البعض كما في الMicroservices قد لا يكون ذلك هو الحل أمثل.
(سلسلة عن gRPC)
في البرامج الOOP يتم التواصل بين تطبيقين على جهازين مختلفين عبر الشبكة من خلال RMI او Remote Method Invocation مثل Java RMI و NET Remoting. و CORBA لمن ادركها في ذلك الوقت. تلك الطرق تندرج تحت تقنية اسمها RPC اختصار Remote Procedure Call
انظمة التشغيل تعطي كل تطبيق مساحته الخاصة من المعالج و الذاكرة في صندوق مغلق يسمى Process هي التي تظهر في الTask Manager و تكلمت عنها في سلسلة سابقة.
المهم نعود لgRPC.
الإتصال بين الأنظمة الداخلية كما في حالة الMicroservices يتم عبر الAPIs و يكون عادة عن طريق REST التي تستخدم بروتوكول HTTP و صيغة JSON و هو سريع لكن غير آمن مثل HTTPS و في المقابل HTTPS ابطأ من HTTP لأن البيانات يحصل لها عملية Encryption و Decryption
قامت شركات كثيرة بتطوير تقنيات RPC اكثر كفاءة بتقليل الاعتماد على JSON و تشكيل صيغة جديدة للبيانات المتبادلة فقامت فيسبوك بتطوير fbthrift و نشرته تحت مسمى Apache Thrift و NetFlix كان لها الRPC الخاص بها لكن يظهر ان الأنظار تتجه نحو gRPC الذي اعتمدته مايكروسوفت في 5 NET.
لأن gRPC يتبادل البيانات بصيغة binary تعرف بـ Protbuf فهو في اغلب الحالات اسرع و قد تصل سرعته الى 10 اضعاف سرعة REST خصوصا اذا كانت الرسائل كبيرة اما اذا كانت صغيرة و طلبات من اكثر من client متزامنة فقد يكون REST أنسب.
يدعم gRPC آمن فهو يدعم عدة طرق للAuthentication بما فيها SSL/TLS و ALTS و OAuth2 tokens و مدعوم من اغلب لغات البرمجة المعروفة.
ميزات gRPC انه استفاد من بروتوكول HTTP/2 اكثر من REST مثل ضغط البيانات و تحديد نوعها اي Strongly Type عكس Json النصي. بالأضافة إلى امكانية الBidirectional Streaming.
عيبه فقط عدم شهرته و الحاجة إلى تثبيته في الأجهزة
لتلخيص ماسبق عملياً : نقول انه مبدئياً للتواصل بين تطبيقات الهواتف و الويب او أي Client و الAPI ابقى على REST لكن للتواصل الداخلي بين الأنظمة أو الMicroservices استخدم gRPC. تحتاج طبعاً لتثبيت الgRPC في كل Server ثم استخدام المكتبة المناسبة الخاصة بالClient ليتم الاتصال.
يبدو أن gRPC سيكون تقنية الRPC المفضلة للاتصال بين التطبيقات و الخوادم في المستقبل القريب خصوصاً تبني شركات كثيرة كCisco و كـDocker و Netflix و مايكروسوفت التي ركزت عليه في مؤتمرها الأخير.
لمعلومات اكثر زر الموقع الرسمي و دمتم.
grpc.io

جاري تحميل الاقتراحات...