إنشاء بنية لبدء تشغيل جديد محمّل للغاية في عام 2019

الهدف هو إنشاء بدء تشغيل جديد محمّل للغاية في الظروف الحديثة. سننظر في إنشاء بنية باستخدام مثال Billingolang ، وهو مشروع فوترة عالمي للأغراض العامة مكتوب بلغة golang. ويشمل المشروع الوصول عبر API ، والموقع الإلكتروني ، والتكامل في النظم المحاسبية والتقارير والرسوم البيانية.

في البداية تم إلقاء أنظمة واحدة مترابطة. كان علي الاختيار بين Erlang و Golang و Rust. تم اختيار Golang كلغة برمجة رئيسية ، لأنه من الصعب العثور على مبرمجي Erlang ، على الرغم من أن الثبات والتبديل السريع للرمز كانت ميزة إضافية لـ Erlang. الصدأ ، على الرغم من الافتقار الرسمي لظروف السباق ، لا يزال أكثر ملاءمة ليس لكتابة التطبيقات ، ولكن للسائقين وأنظمة التشغيل.

لا تحدث المراسلات بين مكونات النظام على RabbitMQ الكلاسيكي ، ولكن على NATS - أظهر الأخير معايير على الخادم المستخدم حاليًا ، رسائل 1M (+ 360K للتجميع) في الثانية مقابل 40K للأرنب. نعم ، وهي مجموعات أسرع وأسهل من RabbitMQ.

قاعدة البيانات: MySQL InnoDB Cluster 7.6 (MySQL server 8.0). تصميم رائع وتصحيح المجتمع أداة MySQL Workbench .

API - مكتوب في Swagger (OpenAPI 2.0). هذا يتجنب الأخطاء من قبل مبرمجين مختلفين ، ويقوم بإنشاء كود نظيف وموثق جيدًا ووثائق API. لسوء الحظ ، يستخدم Swagger gorilla / mux للتجذير افتراضيًا ، ولكن بعد إنشاء واجهة برمجة التطبيقات (API) بأكملها ، سيتم إعادة إنشاء الجذر لـ kataras / muxie - إنه أسرع.

الواجهة الأمامية: من الأطر المتاحة: يتم تحديد Iris و Beego و Revel - Revel. أبطأ من Iris ، ولكن كل شيء خارج عن المربع ، بما في ذلك التكامل مع الرسوم البيانية. لا يزال يتحمل واجهة برمجة التطبيقات الحمل الرئيسي.

القياس: يتم تجميع جميع مكونات النظام في حاويات LXC ، بينما يوجد أمامهم موازن HAProxy . تتلخص فكرة التوسع في ، مع نمو العملاء ، بالتحول إلى خوادم أكثر قوة مع الحفاظ على بنية الحاوية ، ثم توزيع الحاويات على خوادم منفصلة ، واستبدال HAProxy بـ NATS. بالإضافة إلى التوسع الكلاسيكي بواسطة الأجهزة ، هناك دائمًا إمكانية لزيادة عدد goroutine داخل مناولي الحاويات لطلب API والموقع. على الرغم من أن هذه العملية ، كما أظهرت الممارسة ، لها حدود منطقية.

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

الخطأ الشائع والأكثر شيوعًا الذي ترتكبه الشركات الناشئة الجديدة هو التطوير الأولي الضعيف للهندسة المعمارية. وفقًا للمبدأ - "ابدأ الكتابة بسرعة ، ثم سنكتشفها". كقاعدة عامة ، نتيجة لذلك - هذا يؤدي إلى انهيار المشروع.

كما يقولون - "90 ٪ من النجاح هو الإعداد". لا تخف من الإنفاق في البداية على إنشاء بنية كفؤة ومدروسة - إنها ستؤتي ثمارها بشكل جيد.

حظا سعيدا

Source: https://habr.com/ru/post/ar439878/


All Articles