التحكم بإصدار تعريفات proto لتحقيق الاستقرار

الهندسة

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

كيف يمكن تكوين ملفات protobuf؟

بناءً على المتطلبات، يمكن أن يختلف إعداد تعريفات proto لديك من شركة إلى شركة أو تطبيق إلى تطبيق. تم تصميم بروتوكول gRPC لديك حتى يتمكن من استخدام بروتوكول التخزين المؤقت أو ملفات .proto لتطبيق مخطط يمكنه إنشاء خادم وعميل يمكنه إرسال الرسائل بالتنسيقات المحدَّدة. يمكنك إعداد ملف .proto في البداية في موقعين عبر مستودعَي أو مجلدَي Github مختلفين لا يتشاركا وحدات نمطية مشتركة والحصول على كتل متصلة. قد ينتهي بك الأمر في نقطة ما إلى الحصول على عدة تعريفات للخدمة ورسائل مكررة عبر المستودعات. مع gRPC، يمكنك استيراد الوحدات النمطية التي تحتاج إليها عبر الملفات لمنع تكرار التعليمات البرمجية. وعلى ذكر ذلك، قد يساعد إعداد موقع مركزي واحد لتجهيز الملفات وتوريدها إلى مديري الاعتماد لاستخدامها داخل تطبيقك، مثل npm، أو cargo، أو composer. يمكن العثور على مثال لذلك في هذا الموقع واختباره باستخدام npm (مدير حزمة العقدة) عن طريق تشغل npm i @a11ywatch/protos. سترى ملفات التحديد داخل node_module.

بروتوكول proto من داخل npm الذي يستخدم `npm i @a11ywatch/protos` في shell.
مثال على ملفات proto داخل node_modules

مزايا التحكم بالإصدار باتباع semver.

عند اتباع semver (التحكم بالإصدار) مع gRPC، فإن ذلك يساعد في تحديد طبقة التوافق التي تكون صحيحة على مستويات مختلفة. وبشكلٍ عام، لا يكون gRPC منقسمًا عبر التحديثات، إلا إذا فعلت ما يلي.

تغييرات تؤدي إلى تلف البيانات الثنائية

التغييرات التالية غير منقسمة على مستوى بروتوكول gRPC، لكن العميل يحتاج إلى التحديث إذا تمت ترقيته إلى آخر إصدار من عقد .proto. أو أداة إنشاء عميل gRPC. يُعد التوافق الثنائي مهمًا إذا كنت تخطط لنشر مكتبة gRPC عبر مديري الحزم. إزالة حقل - يتم تحديد القيم من حقل محذوف إلى حقول غير معروفة لرسالة. هذا ليس تغييرًا في بروتوكول gRPC يؤدي إلى حدوث عطل، لكن يجب تحديث العميل إذا تمت ترقيته إلى أحدث عقد. من المهم ألا تتم إعادة استخدام رقم الحقل المحذوف في المستقبل. لضمان ألا يحدث ذلك، حدِّد أرقام وأسماء الحقول المحذوفة على الرسالة باستخدام الكلمة الأساسية المحفوظة في protobuf. إعادة تسمية رسالة - عادةً ما لا يتم إرسال أسماء الرسائل عبر الشبكة؛ لذا فإن هذا ليس تغييرًا في بروتوكول gRPC يؤدي إلى حدوث عطل. سيحتاج العميل إلى تحديثه إذا تمت ترقيته إلى أحدث عقد. إحدى الحالات التي يتم فيها إرسال أسماء الرسائل عبر الشبكة هو مع حقول Any، عندما يتم استخدام اسم الرسالة لتحديد نوع الرسالة. تضمين أو عدم تضمين رسالة - يمكن تضمين أنواع رسائل داخل بعضها. يؤدي تضمن أو عدم تضمين الرسالة إلى تغيير اسمها. إن تغيير كيفية تضمين نوع الرسالة له التأثير نفسه على التوافق كإعادة التسمية. تغيير مساحة الاسم - سيؤدي تغيير مساحة الاسم إلى تغيير مساحة الاسم لأنواع اللغات المولَّدة. هذا ليس تغييرًا في بروتوكول gRPC يؤدي إلى حدوث عطل، لكن يجب تحديث العميل إذا تمت ترقيته إلى أحدث عقد.

فعل أشياء رائعة باستخدام نظام التحكم بالإصدار المركزي لدينا.

الآن وبعد أن انتهينا من الأمور المهمة، يمكننا الاستفادة من الأدوات الآلية التي تساعد في تحسين سير عمل gRPC وإنتاجيته.

جيف مينديز

اسمي "جيف" وأستمتع ببناء الأشياء وصيد الأسماك في وقت فراغي.

المنشور ذو الصلة

الثقة في الحفاظ على الشمولية

ابدأ من خلال A11yWatch الآن للحصول على أدوات سريعة بأسعار معقولة للوصول المؤتمت إلة الويب.