الاتصالات الفعالة هي أساس في أي مجال، وعالم الحواسيب ليس استثناء. عندما تتفاعل التطبيقات عن بُعد باستخدام gRPC (نداءات الإجراءات البعيدة)، فإن توضيح الأخطاء بوضوح أمر حاسم.
ابدأ في إنشاء مشروع gRPC الخاص بك مع Apidog من خلال النقر على الزر أدناه! 👇
تتناول هذه المقالة مفهوم رموز حالة gRPC، مما يوفر فهماً أعمق عن كيفية ضمان هذه الرموز لاتصال سلس ومعالجة أخطاء فعالة داخل نظم موزعة.
قبل مناقشة رموز حالة gRPC، دعونا نراجع أولاً ما الذي تمثله gRPC.
ما هي gRPC؟
يشير مصطلح gRPC (نداء الإجراءات البعيدة gRPC) إلى إطار عمل عالي الأداء ومفتوح المصدر يسهل الاتصال بين التطبيقات من خلال آلية نداء الإجراءات البعيدة (RPC).
يتيح إطار عمل gRPC لتطبيق العميل استدعاء طرق على تطبيق الخادم المقيم على جهاز مختلف، كما لو أنه كائن محلي. لذلك، يبسط الإطار تطوير النظم الموزعة من خلال تجريد تعقيدات الاتصال الشبكي.
الخصائص الرئيسية لـ gRPC
حيادية اللغة
RPC مستقل عن المنصة ويدعم لغات برمجة متنوعة، مما يعزز التداخل بين بيئات التطوير المختلفة. هذا يعني أن خدمات gRPC المكتوبة بلغة واحدة يمكن استدعاؤها من قبل عملاء مكتوبين بلغة أخرى، طالما أن كلا اللغتين تحتويان على مكتبات gRPC.
أزرار البروتوكول
تستخدم أزرار البروتوكول، وهي آلية محايدة اللغة لتعريف هياكل البيانات وواجهات الخدمات عن بُعد. وهذا يضمن تسلسل البيانات الفعال وفك تسلسلها بين العملاء والخوادم. تحدد أزرار البروتوكول هيكل البيانات التي يتم تبادلها بين الخدمات.
يتم تسلسل البيانات إلى تنسيق ثنائي مضغوط قبل إرساله عبر الشبكة ثم فك تسلسلها مرة أخرى إلى التنسيق الأصلي على الجانب المستقبل. هذا التنسيق الثنائي أكثر كفاءة من التنسيقات النصية مثل JSON أو XML، مما يمكن أن يحسن أداء تطبيقات gRPC.
أداء عالٍ
تستفيد gRPC من HTTP/2 لنقل البيانات بشكل فعال، مما يؤدي إلى اتصالات أسرع مقارنةً بأطر RPC التقليدية. HTTP/2 هو تحسين رئيسي على HTTP/1.1، البروتوكول الذي يدعم معظم حركة مرور الويب اليوم. يسمح HTTP/2 بإرسال عدة طلبات على اتصال واحد، مما يمكن أن يقلل زمن التأخير بشكل كبير. بالإضافة إلى ذلك، يدعم HTTP/2 ضغط الرأس، مما يمكن أن يحسن الأداء أكثر.
ميزات غنية
يوفر وظائف مدمجة مثل المصادقة، والتفويض، وتوازن الحمل، وفحص الصحة، مما يبسط عملية التطوير. تساعد هذه الميزات على ضمان أمان وموثوقية وقابلية التوسع لتطبيقات gRPC.
توليد الشيفرة تلقائيًا
تستخدم gRPC تعريفات أزرار البروتوكول لتوليد شيفرة العميل والخادم تلقائياً بلغات برمجة متنوعة. يوفر ذلك على المطورين الوقت والجهد، كما يساعد على ضمان توافق الشيفرة بين العميل والخادم.
دعم البث
تدعم gRPC أنماط البث المختلفة، بما في ذلك البث الأحادي (طلب واحد، استجابة واحدة)، وبث جانب العميل (عدة طلبات، استجابة واحدة)، وبث جانب الخادم (طلب واحد، عدة استجابات)، والبث الثنائي الاتجاه (عدة طلبات وعدة استجابات). تجعل هذه المرونة gRPC مناسبًا لمجموعة واسعة من حالات الاستخدام، بما في ذلك بث البيانات في الوقت الحقيقي ونقل الملفات.
ما هي رموز حالة gRPC؟
يعتمد إطار gRPC على رموز حالة gRPC للتواصل بشأن نتيجة نداء RPC (نداء الإجراءات البعيدة)، مما يوفر للمستخدمين معلومات حول ما إذا كانت العملية ناجحة أو فاشلة.
أنواع رموز حالة gRPC
تعرف gRPC مجموعة من رموز الحالة للتواصل بشأن نتيجة نداءات RPC. توفر هذه الرموز معلومات أكثر تحديدًا من رسالة نجاح / فشل بسيطة، مما يسمح للعملاء بفهم طبيعة أي أخطاء قد تكون حدثت. إليك تحليل لأنواع مختلفة:
نجاح (OK)
- الشيفرة: 0
- الوصف: اكتمل نداء RPC بنجاح. هذه هي النتيجة المثالية، مما يشير إلى أن الخادم عالج الطلب بدون مشاكل.
رموز الخطأ (مُنتَجة من قبل المستخدم)
عادةً ما يتم إنتاج هذه الرموز بواسطة منطق التطبيق على جانب الخادم وتشير إلى مشاكل محددة تم مواجهتها أثناء نداء RPC.
أُلْغِيَ (الشيفرة: 1)
- الوصف: تم إلغاء العملية، عادةً بناءً على طلب العميل. قد يحدث ذلك بسبب توقفات، تفاعل المستخدم، أو أسباب أخرى.
غير معروف (الشيفرة: 2)
- الوصف: حدث خطأ غير متوقع على الخادم، ولا يتوفر لديه تفاصيل أكثر تحديدًا حول المشكلة. هذا لديه فئة شاملة للمشاكل غير المتوقعة.
حجة غير صالحة (الشيفرة: 3)
- الوصف: قدم العميل حججًا غير صالحة في الطلب. قد يكون ذلك بسبب عدم وجود حقل مطلوب، أنواع بيانات غير صحيحة، أو قيم خارج النطاق المتوقع.
تجاوز المهلة (الشيفرة: 4)
- الوصف: استغرق الطلب وقتًا طويلاً لإكماله وتجاوز المهلة المحددة. قد يكون هذا ناجمًا عن معالجة بطيئة على الخادم، مشاكل في الشبكة، أو كمية كبيرة من البيانات التي يتم نقلها.
غير موجود (الشيفرة: 5)
- الوصف: لم يتم العثور على المورد المطلوب (مثل ملف، أو إدخال قاعدة بيانات) على الخادم.
موجود بالفعل (الشيفرة: 6)
- الوصف: تم إجراء محاولة لإنشاء مورد موجود بالفعل. قد يحدث ذلك عند محاولة إدخال بيانات مكررة أو إنشاء شيء باسم متعارض.
تم رفض الإذن (الشيفرة: 7)
- الوصف: لم يكن لدى العميل الإذن الضروري لتنفيذ العملية المطلوبة. قد يكون ذلك بسبب عدم كفاية الضوابط الأمنية أو إعدادات الأمان.
استنفاد الموارد (الشيفرة: 8)
- الوصف: نفدت الموارد على الخادم (مثل الذاكرة، أو مساحة القرص) لإكمال الطلب.
فشل الشرط المسبق (الشيفرة: 9)
- الوصف: لم يمكن معالجة الطلب لأن الخادم كان في حالة غير متوقعة. قد يكون ذلك بسبب بيانات غير صالحة في الطلب غير مرتبطة مباشرة بالحجج نفسها، أو أن الخادم كان في حالة غير متناسقة.
مُلْغى (الشيفرة: 10)
- الوصف: تم إلغاء العملية على جانب الخادم. قد يحدث ذلك بسبب أسباب متنوعة خاصة بتطبيق الخادم.
خارج النطاق (الشيفرة: 11)
- الوصف: احتوى الطلب على قيمة تقع خارج النطاق المتوقع. قد يكون هذا رقمًا خارج مجموعة صالحة أو تاريخًا لا يتناسب مع الإطار الزمني المسموح به.
غير مُنفذ (الشيفرة: 12)
- الوصف: لا يدعم الخادم طريقة نداء RPC المطلوبة. قد يكون ذلك بسبب غياب تنفيذ على الخادم أو عميل قديم يحاول استخدام ميزة أحدث.
داخلي (الشيفرة: 13)
- الوصف: حدث خطأ داخلي في الخادم. هذه رمز خطأ عام يستخدم عندما يواجه الخادم مشكلة غير متوقعة لا يمكن تصنيفها بشكل أكثر تحديدًا.
رموز مُولَّدة من المكتبة (gRPC Core)
هذه الرموز لا يتم إنتاجها مباشرة بواسطة شيفرة المستخدم ولكن بواسطة مكتبة gRPC نفسها في ظروف معينة.
خسارة بيانات (الشيفرة: 15)
- الوصف: حدثت خسارة بيانات أثناء نداء RPC. قد يكون ذلك بسبب مشاكل في الشبكة أو مشاكل في أنظمة التخزين.
أنشئ واجهات برمجة التطبيقات gRPC في غضون دقائق مع Apidog
سواء كنت طالبًا على وشك إنشاء أول واجهة برمجة تطبيقات gRPC خاصة بك أو محترفًا يتعامل معها يوميًا، ستحتاج بالتأكيد إلى أداة تطوير واجهات برمجة التطبيقات سهلة الفهم ومريحة للاستخدام. لهذا السبب يجب عليك تجربة Apidog - حل شامل لجميع مشكلات واجهات برمجة التطبيقات الخاصة بك.

إنشاء واجهة برمجة تطبيقات gRPC باستخدام Apidog
سيوضح هذا القسم دليلًا بسيطًا حول كيفية إنشاء واجهة برمجة التطبيقات gRPC الخاصة بك باستخدام Apidog.

أولاً، قم بتنزيل وفتح تطبيق Apidog، وابحث عن زر + مشروع جديد، كما هو موضح في الصورة أعلاه.

ستظهر نافذة منبثقة على شاشتك تطلب منك تأكيد اسم مشروع واجهة برمجة تطبيقات gRPC. يمكنك اختيار اسم مشروع واجهة برمجة تطبيقات gRPC - إنه خاص بك!
استيراد ملف .proto
نظرًا لأن إطار gRPC يتبع نهجًا يبدأ بالواجهة، يجب عليك أولاً تعريف التطوير والخدمات والطرق والرسائل من خلال ملفات .proto.
في Apidog، لديك طريقتان لاستيراد ملفات .proto، وهما:

- ملف محلي
- رابط يستضيف ملف
.proto.
سيتم استيراد ملفات .proto المختارة كبروتو واحد، حيث سيتم استيراد الخدمة كخدمة، ونداءات RPC كطرق. إذا كانت ملفات .proto المختارة تعتمد على ملفات .proto أخرى، فستحتاج إلى إضافة دليل الاعتماد يدويًا.
مع ذلك، ستتم أيضًا استيراد الخدمات من ملفات .proto الأخرى التي تعتمد عليها .proto المختارة إلى نفس بروتو إذا كانت حزمها تنتمي إلى نفس الحزمة كبروتو .proto المختارة.
إعادة استيراد ملفات .proto

إذا كانت هناك أي تغييرات على ملف .proto المستخدم في المشروع، يمكنك إعادة استيراده إلى Apidog. انقر بزر الماوس الأيمن على بروتو، ثم انقر على زر إعادة الاستيراد، كما هو موضح في الصورة أعلاه.
إجراء نداءات أحادية باستخدام Apidog

مثل طلبات HTTP، يمكنك إجراء نداءات أحادية عن طريق إدخال عنوان URL في شريط العنوان، وإدخال محتوى الرسالة بتنسيق JSON في علامة الرسالة. انقر على زر "استدعاء" بمجرد الانتهاء من التفاصيل، وسيتم بدء النداء الأحادي.
إجراء نداءات بث باستخدام Apidog

تشبه نداءات البث إلى حد ما اتصالات WebSocket حيث، بعد بدء النداء، يُسمح لك بكتابة وإرسال رسائل تحت علامة الرسالة. تشمل الأنواع الأخرى من نداءات البث بث الخادم، وبث العميل، والبث الثنائي الاتجاه.
لضمان فهم كامل من قبل المستخدمين حول نداءات البث، توفر Apidog عرضًا زمنيًا يعرض حالة النداء، والرسائل المرسلة، والرسائل المستلمة، مرتبة زمنياً.
لتتعرف على مدى ميزات Apidog الكاملة لواجهات برمجة التطبيقات gRPC، تأكد من زيارة هذا الرابط!

الخلاصة
تلعب رموز حالة gRPC دورًا حيويًا في ضمان الاتصالات الفعالة والمفيدة بين تطبيقات الحواسيب. من خلال استخدام نظام موحد من الرموز، يمكن للمطورين تسريع معالجة الأخطاء ونقل سبب المشكلات التي تحدث أثناء التفاعلات بشكل فعال.
لا يؤدي ذلك فقط إلى تبسيط عمليات تصحيح الأخطاء ولكن أيضًا يعزز الموثوقية العامة للنظم الموزعة. مع استمرار gRPC في اكتساب traction، ستصبح الفهم الكامل لرموز حالاته أكثر قيمة للمطورين الذين يهدفون إلى بناء تطبيقات قوية وقابلة للتوسع.
