في 2008. شركة Facebook كان عندها حوالي 100 مليون مستخدم نشط. في تلك الفترة قرروا يطلقوا ميزة Inbox Search اللي تتيح للمستخدمين البحث داخل رسائلهم. النظام كان محتاج إنه يتعامل مع مليارات العمليات من الكتابة يوميًا. وهنا أحنا بنتكلم عن متطلبات كثيرة زي ال Low latency وتكرار البيانات عبر مراكز بيانات موزعة عالميًا.
قامت Facebook ببناء قاعدة بيانات اسمها Cassandra فكرتها قائمة على ال Distributed System. واللي أتاحت لـ Facebook تحقيق Replication والاعتماد على Eventual Consistency لضمان الأداء والاستقرار.
مع مرور الوقت تضاعف عدد المستخدمين إلى مئات الملائين. وأصبحت Cassandra العمود الفقري للعديد من خدمات Facebook.
فكرة ال Distributed System اللي قائمة على توزيع الحمل أو ال processing بين مجموعة من Nodes وبتضمن أنه يحصل Replication للداتا عشان نتجنب فقدانها في حالة حصل failure لأي مكون بتعطي لأي نظام ميزات زي ال high availability, fault tolerance, scalability. توزيع البيانات بين ال Nodes في ال distributed system بيتم عن طريق خوارزميات زي Consistent Hashing واللي بتوزع البيانات بشكل متساوي على Nodes مع تقليل تأثير التغييرات. مثل إضافة أو إزالة Nodes. هذا اللي يجعل ال distributed system قادرة على التوسع بسلاسة مع الحفاظ على أدائها وبتضمن لنا ال Consistency وفي بعض الحالات مثل Eventual Consistency (واللي يعني إن البيانات المكررة قد تكون غير متزامنة لفترة قصيرة لكن النظام يضمن أنها ستتزامن لاحقًا). هذا الأسلوب يتيح لأي نطام تحقيق توازن بين ال high performance وال consistency. خاصة في التطبيقات التي تتطلب استجابة سريعة مع دعم للتوسع.
تجربة Facebook مع Cassandra كانت نموذج واضح على كيفية استغلال الحلول اللي بتقدمها لنا ال Distributed Systems لحل مشاكل عالمية. وتصميم Cassandra مكن Facebook من التعامل مع مليارات العمليات يوميًا مع الحفاظ على استقرار البيانات وتوفرها حتى في حالات الفشل.
طبعاً كثير من ال software القائمة على ال Distributed System بنلاقيها مفتوحة المصدر.. على سبيل المثال حاجة زي Kafka اللي قدم لنا حلول Event Streaming واتاح نقل البيانات بين الأنظمة بكفاءة عالية ومعالجة ملايين ال messages في الثانية الواحدة. وحاجة زي ال ZooKeeper اللي أصبح حاجة مهمة لإدارة Clusters وتنسيق العمليات. ومشاركة ال meta data. وما في أحد منا ما يعرف Redis اللي وفر لنا أداء عالي كقاعدة بيانات موزعة تعتمد على التخزين في ال Memory.
هذه الحلول صنعت فارق كبير في الطريقة التي نبني بها الأنظمة اليوم. اختيار الأداة الصحيحة وتوظيفها بشكل صحيح يمكن أن يكون الفارق بين نظام يعالج الضغط بكفاءة ونظام ينهار عند أول تحد.
Original source
This content was originally published as a LinkedIn post. Open it in a new tab.