التحول الرقمي هو اتجاه عالمي للشركات الكبيرة وهو أمر حيوي لتكييف الشركة مع احتياجات العملاء الحديثة. بالإضافة إلى المشكلات المعتادة المتمثلة في الأنظمة المركزية للشركات الكبيرة والجمع بين أنظمة الفوترة وقواعد بيانات المشتركين ، تتم إضافة متطلبات توفر عالية وطريقة التشغيل في الوقت الفعلي إلى العملاء الذين اعتادوا بالفعل عليهم من قبل رواد الصناعة (Google و Amazon و Netflix).
تتطلب التحديات الجديدة تقنيات وأساليب جديدة ضرورية لتقليل وقت تقديم الوظائف المناسبة للعميل ، والعروض التجارية الشخصية ، والاستجابة السريعة لعروض المنافسين ، وكذلك التحكم في تكاليف النظم والبنية التحتية لتكنولوجيا المعلومات ومراكز البيانات والموظفين المؤهلين. هذه الاتجاهات هي أيضًا ناقص كبير: تعقيد البنية وقواعد بيانات المعاملات المتضخمة التي لا يمكنها التعامل مع تدفق المعلومات ومعالجتها. تقنيات الجيل السابق لها سقف التحجيم الرأسي. على سبيل المثال ، يعمل مثيل Oracle DBMS عند الحد من أقوى خادم على معالجات x86 مع تحميل مليار معاملة في اليوم.

من أجل تحمل عبء مماثل واجهته صناعة الإنترنت منذ فترة طويلة ، يتم استخدام مجموعة جديدة من التقنيات ، مثل ذاكرة التخزين المؤقت في الذاكرة وقواعد بيانات NoSQL. لذلك ، تستخدم Apple كاساندرا ، سبيربنك - إشعال (GridGain) ، في MegaFon نستخدم Couchbase و Tarantool.
يستخدم MegaFon أنماطًا معمارية مختلفة لنظام إدارة قواعد البيانات في الذاكرة:
- ذاكرة التخزين المؤقت بسيطة ، وتحديثها في الموعد المحدد أو حسب الحدث من قاعدة البيانات والتطبيقات
- يتم إجراء جميع التغييرات على قاعدة البيانات من خلال ذاكرة التخزين المؤقت (البرنامج النصي للكتابة) ، على سبيل المثال ، توصيل عميل Oracle بـ DCP Couchbase
بالنسبة إلى أحد أنظمة اتخاذ القرار الخاصة بنا من أجل حياة المشترك ، فإننا نستخدم القالب الأول ، نظرًا لأن تطبيقًا واحدًا فقط على مجمل البيانات يتخذ قرارًا ويرسله إلى جميع الأنظمة ، بما في ذلك قاعدة بيانات Oracle. واحدة من ألمع الحالات لاستخدام دورة حياة المشترك هو قفل وفتح الرصيد السلبي. بعد كل شيء ، جميع المشتركين من مشغلي شبكات الهاتف النقال بعد تجديد الرصيد يريدون أن يكونوا على اتصال وإجراء مكالمات على الفور. بفضل تطبيق منفصل و Couchbase ، تمكنا من تقليل الوقت للخروج من القفل من 90 ثانية إلى 30 وهذا ليس الحد الأقصى. فقط السجل الخاص بالتغيير في حالة المشترك سيدخل في قاعدة البيانات الرئيسية (الشكل 1)
الشكل 1 (مثال التفاعل)باستخدام التقنيات الحديثة ، تمكنا من تقليل الوقت للخروج من القفل المالي 3 مرات. ولكن من أجل الحصول على النتائج الحالية ، قطعنا شوطًا طويلًا في التحول المعماري لدائرة إعداد الفواتير وفي اختيار قاعدة بيانات NoSQL.
لماذا اخترنا Couchbase؟ هناك عدة أسباب لذلك.
متطلبات الأداء
- معالجة ما يصل إلى 200000 طلب في الثانية.
- يصل متوسط وقت الاستجابة (50٪) إلى 5 مللي ثانية (داخل مركز بيانات واحد).
- الحد الأقصى لوقت الاستجابة (99 ٪) هو ما يصل إلى 15 مللي ثانية (داخل مركز بيانات واحد).
- أقصى أداء الإدراج 500 ميغا بايت / ثانية
- الحد الأقصى لعدد عمليات الإدراج 100،000 / ثانية
- الحد الأقصى لعدد عمليات التغيير (تحديثات المستند) 100000 / ثانية
- الحد الأقصى لأداء التغييرات (تحديثات المستند) 500 ميجابايت / ثانية
- الحد الأقصى لعدد عمليات القراءة 100،000 / ثانية
- أقصى سرعة قراءة 500 ميجابايت / ثانية
البحث عن مفتاح الأداء العالي والوصول إلى البيانات
في قلب Couchbase يوجد الموزعة الرئيسية المدفن (KV). مستودع KV هو أسلوب بسيط للغاية لإدارة البيانات يقوم بتخزين معرف فريد (مفتاح) مع جزء من المعلومات التعسفية. يمكن أن يقبل مستودع KV نفسه أي بيانات ، سواء أكانت وثيقة ثنائية أو وثيقة JSON. بسبب بساطة تطبيق KV ، يتم ضمان الوصول إلى البيانات بأقل تأخير. كما توضح تجربتنا ، فإن زمن الوصول إلى الشبكة أعلى في كثير من الأحيان بمعدل 2-3 مرات من توفير البيانات الأساسية على جانب Couchbase.
مخطط التخزين الديناميكي ( JSON)
يتم تخزين المستندات على خادم Couchbase بتنسيق JSON. يدعم التنسيق كلاً من أنواع البيانات الأساسية ، مثل الأرقام والسلاسل والأنواع المعقدة ، بالإضافة إلى القواميس والمصفوفات المدمجة.
مخطط البيانات في Couchbase هو بنية منطقية يحددها التطبيق والمطور. نظرًا لمرونته وقدرته على استخدام العديد من الخيارات ، يمكننا استخدام علامة في المستند ، على سبيل المثال ، مع معلومات الإصدار. يمكّن هذا التطبيق من تحديد الوضع الذي سيتم معالجة المستند فيه ، وكذلك ضمان الانتقال السلس لقاعدة البيانات إلى نظام البيانات الجديد.
توافر عالية
واحدة من المعلمات المكونة لنظام المعلومات هو توافره. يوفر Couchbase توفرًا عاليًا للبيانات مع العديد من الميزات المختلفة. أحدها هو النسخ المتماثل للبيانات (توزيع نسخ متعددة من البيانات على خوادم نظامية مختلفة) ، والذي يسمح لك بتقديم خدمة أثناء الصيانة الروتينية أو فشل بعض الخوادم.
الشكل 2 (النسخ المتماثلة خادم Couchbase)الميزة الهامة الثانية للتوفر العالي هي DCP الداخلي (بروتوكول تغيير قاعدة البيانات). يوفر نقل عالي السرعة لتغيير جميع نسخ البيانات ، والفهارس الثانوية (GSI) ، والنسخ المتماثل للمجموعات المتقاطعة (XDCR) والمستهلكين الخارجيين.
النسخ المتماثل ثنائي الاتجاه
الممارسة الجيدة في الشركات هي استخدام التكرار لجميع العمليات والمعدات التجارية. من الناحية المثالية ، هذا هو نسخة احتياطية في وضع Active-Active ، عند التبديل بين العقد المشكلة يحدث تلقائيا. النسخ المتماثل ثنائية الاتجاه في Couchbase يمكّن وضع AA. لكن اختبار النسخ المتماثل أظهر أنه فعال فقط في مراكز البيانات القريبة. مع تباعد أكثر من 100 كم ، تظهر النزاعات. Couchbase لديه آليات حل النزاع: بناءً على الطابع الزمني ورقم التسلسل. ومع ذلك ، بسبب التأخير الزمني على الشبكة ، يتم إدخال البيانات القديمة في قاعدة البيانات. لقد تخلينا عن استخدام النسخ المتماثل ثنائي الاتجاه (الاتساق عبر الكتلة). يتم تنفيذ جميع التغييرات على مجموعة واحدة فقط. يتم توفير توفر البيانات في وضع القراءة في جميع مراكز البيانات (AA).
التحجيم الأفقي
واحدة من الخصائص المهمة لمعظم قواعد بيانات NoSQL هي القياس الأفقي (الشكل 3). يتمثل الاختلاف الرئيسي في Couchbase في دعم التحجيم متعدد الأبعاد ، عندما يمكننا في المجموعة فقط زيادة أداء الخدمة المطلوبة. على سبيل المثال ، تستخدم لعبة Pokemon GO بنية مجزأة. في بداية المشروع ، تم استخدام 5 خوادم مع خدمات مشتركة. بعد زيادة الحمل ، استخدموا بنية متنوعة: 5 خوادم بيانات و 55 خوادم لمعالجة الاستعلامات والفهارس. أحد عيوب القياس مع Couchbase هو أن أوركسترا لديه مشاكل عند وجود أكثر من 50 عقدة تاريخ في الكتلة.
الشكل 3 MDS
هو متطلبات
أثرت متطلبات أمن المعلومات على اختيارنا بدرجة أقل ، ولكن وجودها في النظام جعل حجة إضافية لصالح قاعدة بيانات واحدة أو أخرى. نظرًا لأن ذاكرة التخزين المؤقت قد تحتوي على بيانات شخصية ، يجب أن نتبع متطلبات المنظم بدون فشل. يجدر بنا اتخاذ قرار: هل سنستخدم معدات إضافية أو هل يمكننا تزويد هذا بقاعدة البيانات نفسها؟!
في إصدار المؤسسة ، يدعم Couchbase تشفير حركة المرور وتشفير البيانات والوصول المخصص. هذا يوفر المال على معدات مثل Cisco ASA.
سهل الترقية
تتمثل إحدى نقاط القوة المهمة في Couchbase في آلية التحديث الشفافة ودعم الإصدارات القديمة من واجهة برمجة التطبيقات. أثناء ترقية الكتلة ، يعمل في وضع التوافق. آليات جديدة ستعمل فقط بعد ترقية كتلة كاملة. تكون تأثيرات تشغيل التطبيقات ضئيلة للغاية بسبب دعم واجهة برمجة التطبيقات القديمة.
ملاحظة: يُسمح بالترقية / التخفيض فقط على الإصدارات الرئيسية المجاورة
وظائف إضافية
التوزيع المنطقي
ميزة أخرى مثيرة للاهتمام هي مزيج من الخوادم في كتلة في مجموعات منطقية ، مع النسخ المتماثلة المرفقة بها. هذا يسمح لك بتوزيع نسخ كاملة من النسخ المتماثلة من نفس الكتلة إلى autogates مختلفة. يسمح ذلك لفشل أحد وكلاء السيارات في الحصول على نسخة كاملة من البيانات في الثانية
الشكل 4 خادم غروبوسالنسخ الاحتياطي واستعادة
Couchbase يحتوي على أدوات النسخ الاحتياطي والاسترداد الجاهزة. يمكن أن تعمل عملية النسخ الاحتياطي في ثلاثة أوضاع: كاملة ، تفاضلية وتراكمية. يسمح هذا في بعض الحالات بتوفير مساحة على القرص وموارد المعالج.
Couchbase ضد مونجو
من الصعب الإجابة على سؤال اختيار قواعد بيانات بديلة لـ NoSQL ، وغالبًا ما يكون نظام Unix الأفضل هو الذي يعرفه المشرف لديك. دعونا نحاول صياغة السبب الذي جعلنا نفضل Couchbase ، وليس منصة أخرى مشهورة جدًا - MongoDB.
من الصعب للغاية مقارنة مشروعين مختلفين بهندسة ووظائف مختلفة. إحدى المعلمات التي نوليها الاهتمام هي سهولة الصيانة والقدرة على إعادة تكوين النظام بسرعة لتلبية احتياجات العمل.
الجدول 1 مقارنة
| Couchbase
| مونجودب
|
التحجيم
| التلقائي لمجموعة البيانات بأكملها
| اختيار مفتاح يدوي
|
توزيع البيانات
| يتم دائمًا توزيع البيانات بالتساوي عبر جميع نقاط البيانات.
| يمكن أن تؤدي العلامات غير الصحيحة إلى توزيع البيانات المنحرفة
|
إضافة / إزالة المضيف أو نسخة طبق الأصل
| تتم إضافته في خطوة واحدة من خلال واجهة المستخدم الرسومية ، مع إعادة التوازن
| مهمة صعبة إلى حد ما مع حسابات الوزن لكل مجموعة
|
توزيع توزيع الرف / مركز البيانات
| نفذت من خلال مجموعات منطقية
| لم تنفذ
|
موازنة التحميل التلقائي
| كل عقدة لها نفس عدد السجلات النشطة المتاحة للقراءة والكتابة.
| غير متوازن. العقد الثانوية لا تدعم التسجيل
|
مقياس الفهرس
| مرن ، يمكنك إضافة فهرس عقدة منفصل بسبب تنوع البنية
| يقيس التحجيم الثابت للمؤشر تحجيم البيانات.
|
الكتلة الفوقية
| موزعة على جميع عقد الكتلة
| خادم التكوين مطلوب
|
بحث متكامل
| N1LQ (SQL ++)
| طلب JSON
|
الجدول 2 مقارنة النسخ المتماثل
| Couchbase
| مونجودب
|
العمارة
| النسخ المتماثل Intercluster لا يوجد لديه التبعيات ، الكتل مستقلة عن بعضها البعض
| توسيع Intracluster فقط
|
مرونة التكوين
| مرن (إعداد دلاء ، فلاتر ، ضبط)
| ضبط السرعة
|
طوبولوجيا
| النسخ المتماثل ثنائي الاتجاه ، النجمة ، السلسلة ، إلخ.
| نجمة
|
وضع نشط نشط
| بدعم من
| غير معتمد
|
بشكل عام ، Couchbase أكثر مرونة وأبسط في الإعدادات المطلوبة لمهامنا والهندسة الهجينة المتغيرة بسرعة.
تجربة التشغيل
بادئ ذي بدء ، نود أن نعطي الأرقام التي يعمل بها النظام والمجموعة الآن على Couchbase.
- أكثر من 80 مليون مشترك [i]
- 380 مليون JSON وثائق معلومات العملاء
- 3.5 تيرابايت HDD (نستخدم memcached ، يتم تخزين المعلومات على القرص لبداية سريعة)
- 3 تيرابايت رام
- 50 ألف عملية في الثانية (الشكل 5)
- 50 microservices التي تعالج تدفق الرسالة بالكامل
الشكل 5 تحميلالمعالم الأولى للتحول بدأنا مع الإصدار الثالث من Couchbase. في المرحلة الأولى ، في بداية المشروع ، عملت جميع التطبيقات بثبات. ولكن عند ترجمة منطق إضافي لآلية جديدة ، واجهنا حقيقة أن آلية العرض بدأت تعمل بشكل غير متوقع. أي في مرحلة ما ، تجمدت العملية وهذه الآراء من هذه العقدة توقفت عن العودة. في الوقت نفسه ، لم ينقطع الوصول إلى البيانات ومعالجتها. تم إصلاح المشكلة بسهولة تامة - عن طريق إعادة تشغيل العقدة ، مما قلل عمومًا من توفر الخدمة. أثناء الاتصال بالدعم الفني Couchbase ، تم عرض أمر غير موثق يعيد تشغيل عملية العرض فقط
curl -s --data 'cb_couch_sup: restart_couch ().' -u المسؤول: تمرير http://127.0.0.1:8091/diag/eval [ii]
الأمر صالح فقط في الإصدارات 3.x.
curl -s --data 'couch_server_sup: restart_core_server ().' -u المسؤول: المسؤول http://127.0.0.1:8091/diag/eval
الأمر صالح فقط في الإصدارات 4.x.
هناك مشكلة أخرى في الإصدار الثالث وهي آلية ضغط البيانات العاجلة (الضغط). كان لابد من البدء يدويًا وفقًا لقياسات المراقبة التي تم تشغيلها. حافظت كلتا المشكلتين على التوتر ليس فقط على واجب التحول ، ولكن أيضًا على المهندسين الوظيفيين.
في هذا الصدد ، قررنا الانتقال إلى الإصدار الرابع. استغرقت الهجرة ذات التأثير الأدنى على الخدمة حوالي أسبوعين. لا تتطلب عملية التحديث بحد ذاتها إجراءات وتحكمًا معقدًا ، ولكن عند إضافة عقدة أو إزالتها ، يتم إطلاق عملية إعادة التوازن ، والتي تستغرق ساعتين على الأقل. في هذه العملية ، وجدنا طريقة لتسريع عملية التحديث من خلال خادم المخزن المؤقت: في هذه الحالة ، لا تبدأ عملية إعادة توازن نظيفة ، ولكن تنقل البيانات من عقدة إلى أخرى. هذا خفض عملية التحديث إلى 30 دقيقة.
عند تحديث مجموعة صناعية ، يجب مراعاة الفروق الدقيقة التالية: العمل في وضع التوافق ، عندما تعمل المجموعة في وضع الإصدار الأحدث من البرنامج. على الجانب الإيجابي ، تكون عملية الترقية سلسة وغير مؤلمة ، ولكن مع ذلك ، لن تتمكن من استخدام وظائف جديدة ، مثل آلية الضغط الجديدة ، N1QL ، حتى يتم تحديث المجموعة بالكامل بالكامل.
بعد التحديث ، تمكنا من حل مشكلة واحدة فقط - الضغط. بدأت تعمل بشكل صحيح. مع "طريقة العرض" ، لا تزال المشكلة قائمة ، على الرغم من تكرارها بشكل أقل كثيرًا. كان من الممكن تصحيحه فقط بواسطة قوى مطوري Couchbase في الإصدار 4.6.4.
كجزء من حل مشكلات الدعم الفني ، أصبح من الواضح أن آلية العرض لن يتم تحديثها بعد الآن. تم ذلك على أساس أن معظم عملاء Couchbase لا يستخدمون طرق العرض للأغراض التي تم إنشاؤها من أجلهم ، وأنجز Couchbase آلية N1QL جديدة. يتم تنفيذه بواسطة خدمة منفصلة والآن لا يعتمد على عقد البيانات (الشكل 7)
الشكل 7 أدوار العقدةلقد أغلقت جميع المشاكل الحرجة مع الإصدار 4.6.4. ولكن نظرًا للزيادة في حجم البيانات ، فقد قرروا الانتقال إلى الإصدار الخامس ، حيث أضافوا قاعدة بيانات جديدة للفهارس وعلى بياناتنا انخفض مقدار الذاكرة والأقراص مرة واحدة ونصف. لكن لسوء الحظ ، لم نشهد انخفاضًا في كمية البيانات الموجودة على عقد البيانات.
الاستنتاجات
بشكل عام ، أثبت Couchbase أنه نظام ناضج يحمل حمولة عالية ، حتى في الحالات غير المحددة (Viber - تستخدم كقاعدة بيانات). ضمن بنية MegaFon الهجينة ، يمكن تكييف المجموعة بسهولة لأي غرض دون تعطل المعدات ودون إعادة تهيئة الخادم بشكل خطير ، مما يمكّن الشركة عمومًا من تقليل تكاليف الموظفين وجعل خدمة المشترك مريحة قدر الإمكان.
باو MegaFon
2018 كوفالتشوك إيجور
[i] لا يعالج النظام المشتركين فحسب ، بل يعالج أيضًا الأجهزة المزودة ببطاقات SIM أو أجهزة المودم المدمجة وما إلى ذلك.
[ii] استشر أخصائي قبل الاستخدام