معمارية Sanja Microservice منتشرة على نطاق واسع في تطوير البرمجيات. لكن المنظمات التي تستخدمها ، بالإضافة إلى الصعوبات في تنفيذ منطق الأعمال ، تواجه أيضًا إخفاقات موزعة.
أخطاء الحوسبة الموزعة موثقة جيدًا ولكن يصعب اكتشافها. نتيجة لذلك ، يصبح بناء بنية نظام موزعة واسعة النطاق وموثوقة تحديًا معقدًا. يمكن أن تصبح التعليمات البرمجية التي تبدو رائعة على نظام أحادي مشكلة بمجرد الانتقال إلى الشبكات.
فريق حلول سحابة Mail.ruترجم مقالاً شارك مؤلفه في الكشف عن الأخطاء النموذجية في كود الإنتاج لعدة سنوات ودرس الأسباب التي أدت إلى هذه النتيجة. توفر هذه المقالة إرشادات مراجعة التعليمات البرمجية التي يستخدمها المؤلف كقائمة مراجعة أساسية.
فشل النظام البعيد
بغض النظر عن مدى دقة تصميم النظام ، فإنه سيتعطل في مرحلة ما - هذه حقيقة عند إطلاق البرنامج في الإنتاج.
تحدث حالات الفشل لعدة أسباب: الأخطاء ومشاكل البنية التحتية والزيادات المفاجئة في حركة المرور وانحلال الإهمال ، ولكنها تحدث دائمًا تقريبًا. تعتمد متانة وموثوقية البنية بأكملها على كيفية معالجة الوحدات النمطية للأخطاء:
- . . , , . — . , .
- . , . ? ? , ? ? .
هذا الموقف أسوأ من الانهيار الكامل لأنه من غير المعروف ما إذا كان النظام البعيد قيد التشغيل. لذلك ، للتعامل مع هذا السيناريو ، يجب عليك دائمًا التحقق من المشكلات الموضحة أدناه.
يمكن حل بعض المشكلات بشفافية في رمز التطبيق باستخدام تقنيات Service Mesh مثل Istio. ومع ذلك ، تحتاج إلى التأكد من معالجة هذه المشكلات بغض النظر عن الطريقة:
- ضبط المهلات لمكالمات النظام عن بعد . ينطبق هذا أيضًا على مهلات API البعيدة واستدعاءات قواعد البيانات ونشر الأحداث. تحقق مما إذا تم تعيين المهلة اللاحقة والمعقولة لجميع الأنظمة البعيدة في المكالمات. يؤدي هذا إلى تجنب إهدار الموارد في الانتظار إذا أصبح النظام البعيد غير مستجيب.
- -. , — . , .
, - (, ). , , . — , . - (Circuit Breaker). , , Hystrix. . , Circuit Breaker . — .
- - . - — , . , . , -. , .
- . , . , , .
- . , ( API, ), — . : , , . .
,
- , API . - API. , API . API API, — .
- SLA — . SLA , . , .
SLA : — . , SLA. — , , . - API-. SLA — SLA.
- . — , . , , , . .
— «» , «» . , id = 123, id =123. , «» , « ». .
- . , , . , Redis, . , .
- . API (), ? , , ? API ?
- . , , , . . . , , . . .
- تحقق من المدخلات في كل نقطة دخول. في بيئة موزعة ، يمكن اختراق أي جزء من النظام من وجهة نظر أمنية أو وجود أخطاء. لذلك ، يجب على كل وحدة فحص ما تستقبله عند مدخلاتها. ولا تفترض أنه سيحصل على مدخلات نظيفة ، أي آمنة.
- لا تقم أبدًا بتخزين بيانات الاعتماد في مستودع رمز. هذا خطأ شائع جدًا يصعب التخلص منه. ومع ذلك ، يجب دائمًا تحميل بيانات الاعتماد في وقت تشغيل النظام من وحدة تخزين خارجية ، ويفضل أن تكون آمنة.
آمل أن تجد هذه الإرشادات مفيدة في تقليل الأخطاء الشائعة في كود الأنظمة الموزعة.
حظا سعيدا!
ماذا تقرأ: