الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي بنية الأنظمة الضخمة مثل facebook و google من حيث التخزين و الكود ؟

بدأه حسام الشامي في 28 ديسمبر 2011 · 9 رد · 1,906 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته ..

  1. توقف منتدى الفريق العربي للبرمجة منذ فترة و كان الهدف هو الصيانة و حسب المدونة انه كانت هناك مشكلة في الــ storage ..رابط .. مما حعلني أسأل عن المواقع التي فيها معلومات ضخمة مثل youtube و google و facebook و غيرها .. ما هي بنية النظام و شكل الكود لديهم ؟ .. هل ببساطة في facebook يوجد جدول للــ Posts و جدول آخر للـ Comments و ثالث للـ Likes ...؟و كذلك نفس السؤال في google و youtube ..
  2. قمت بعمل بحث سريع عن الموضوع .. فلم أجد الجواب .. ربما لأن الموضوع يعتبر من أسرار الشركات مثلا .. فبالرغم من وجود ملايين أو ربما مليارات الــ Posts في facebook تجد أن إعادة الــ Posts في صفحة يكون سريعا جدا ..
  3. قمت باستخدام برنامج SmartSniff الذي يلتقط الــ Packets المرسلة و المستقبلة عبر الشبكة .. و يوضح المرسل و المستقبل ...
    و قمت فتح صفحة معينة على facebook و عملت بحث عن كلمة في جوجل و وجدت مايلي : post-94677-008056900 1325027677_thumb.pn
  4. لاحظ أنه تم الاتصال بالــ Host المسمى www-12-02-as3.facebook.com و هو حسب الــ DNS عبارة عن سيرفر أو جهاز مستقل غالبا و يختلف عن الجهار السيرفر www.facebook.com . أي أن جزء من المعلومات مخزنة على هذا الجهاز و هو يقوم بمعالجتها و إرسالها لي كي يتم توزيع الحمل على مجموعة من الأجهزة .. و هذا ما يعطي مثل هذه المواقع هذه السرعة التي نراها ...(هذا تفسيري للموضوع)
  5. أيضا تم الأتصال بالــ Host المسمى fa-in-f106.1e100.net و عند الاستفسار عنه .. تبن أنه تابع لشركة جوجل ...رابط و أن هذا الــ Host يقوم بمهمة ما .. أيضا ...
  6. السؤال : هل يمكن ذكر بعض الأنظمة المفتوحة المصدر تقوم بمثل هذا الشئ ..؟ ماذا أفعل كي اصمم موقع يمكنه أن يحوي معلومات ضخمة و يبقى يعمل بسرعة ..هل يمكننا القول أنها مواقع تستخدم أكثر من سيرفر فيزيائي ؟ و هل هي مهمة المبرمج ... فهو يحدد أنه مثلا يقوم بتخزين جزء من المعلومات على host و جزء آخر على host آخر ... ؟
  7. أرجو من الإدارة عدم حذف أو إغلاق الموضوع (مبدئيا) .. كي يدلو كل شخص بدلوه .. لأني اعرف أنه لا يوجد مرجع يوضح بنية هذه الأنظمة الضخمة .. التي تعمل بسرعة عالية ..
المرفقات
smartSniff.png
5 −1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

لن أدخل في تفاصيل موضوعك كثيرا ولا أدري إن كان فيسبوك له علاقة بما سأذكر، ولكن هناك العديد من الأنظمة - مفتوحة المصدر - يُستفاد منها في مثل هذه الأمور:

1- تقنية Beowulf (ذئب النحل)، القائمة على تكوين عنقود يتألف من مجموعة من الحواسيب (المعالجات) التي تشترك في معالجة الأوامر مخلّقةً قوة معالجة خارقة، غالبا ما يستفاد من هذه التقنية في علوم الفيزياء والرياضيات لحساب نواتج معادلات ثقيلة، وتوقعات رقمية قائمة على أرقام نجمية.

روابط مساعدة:

ذئب النحل على أنظمة نواة لينوكس.

إعداد ذئب النحل على نظام FreeBSD.

2- تقنية Load balancer (موازن الحمل)، قائمة على توزيع الطلبات على عدة خوادم متطابقة المحتوى، وهنالك خوارزميات عديدة لطريقة توزيع الطلبات على الخوادم، مثل round-robin و Random ..إلخ، تعاملت سابقا مع أحد أنظمة مفتوحة المصدر تعمل بامتياز مثل: LVS و Pound .

3- تقنيات جس النبض (التوفر العالي) High Availability وهي أنظمة تقوم بمراقبة أي خادم يفشل في العمل وتقوم بتوكيل خوادم بديلة جاهزة للعمل بسرعة. أحد البرامج المفتوحة المصدر في هذا الصدد هو CARP.

تم تعديل هذه المشاركة بواسطة A.S Hack في 28 ديسمبر 2011 في 12:38

9

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#4

السلام عليكم ...

مشكورين الإخوة على الردود ..

+1

+1

  1. طبعا الروابط بحاجة إلى قراءة بتمعن و دقة ... و هذا يأخذ وقتا ..
  2. و كما ذكر في أحد الروابط أن كثير من الأمور و التفاصيل و الجزئيات تبقى مخفية (لزوم الشغل) ..
  3. النظام عندهم ليس عبارة عن php و mysql مثلا .. فكما ذكر أحد الروابط أن الـ facebook يعتمد أساسا على أداة hiphop تقوم بتحويل يتحويل الــ PHP إلى C++ محسن Optimized ..إضافة لقواعد البيانات من نوع schema-less and document-oriented وة أيضا تم استخدام لغة الجافا و الله أعلم ..
  4. أيضا تقنيات الــ load balancing و الــ High availability يجب القراءة عنها .. و كيفية استخدامها مع طلبات صفحات الويب .. و دمجها مع الــ web server .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

لا أعرف بالظبط الطريقة المستخدمة لكن ما أعرفه أنهم لا يستخدمون Relational Database عادية .

مثلاً Twitter و Facebook و غيرهم يعتمدون على Cassandra ( أو على الأقل شيء شبيه بها ) :

http://cassandra.apache.org/

أما Google فتخزن نتائج البحث و تفهرسها بطريقة شبيهة بـ Apache Lucene :

http://lucene.apache.org/

أما البنوك فلن تجدها تستخدم هذه المنتجات بل تستخدم Oracle و Relational Databases بشكل عام .

وبالتالي كل تطبيق يخزن بياناته بطريقة مختلفة حسب أهداف التطبيق . صدقني لا أعرف عن ماذا أتكلم لكن ما أفهمه أن بعض " القواعد الصارمة" التي تفرضها Relational Databases المعروفة مثل Oracle

مرة أخرى كل ما سبق مجرد " تخمين " فقط من قراءة سطحية قمت بها قبل 6 شهور عندما كنت مهتماً حول الموضوع .

=

MySQL أكثر من مرة تتعطل فيها الجداول الضخمة ( وحسب ما قرأت ، غالباً يحدث هذا بسبب مشكلة I/O ، كامتلاء القرص مثلاً ، و كانت تلك هي مشكلتنا التي سببت كل هذا ! )

1 −1

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

لا اعتقد ان الطرق المتبعة مخفية او سرية , ربما بعض الجزئيات قد تكون سرية نعم لكن هذه الشركات تمتلك الدعم الكافي لتوفير فريق عمل متكامل لحل المشاكل وايجاد افضل الحلول

كذلك لا تنسى مختبرات الابحاث التي تمتلكها هذه الشركات فهم يطوروا افضل التقنيات لحل المشاكل

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#7

Facebook تستخدم نسخة معدلة من MySQL و الفريق داخل Facebook نفسه

و هذه بعض الروابط

http://www.readwriteweb.com/hack/2010/11/facebook-mysql-scale.php

http://gigaom.com/cloud/facebook-shares-some-secrets-on-making-mysql-scale/

1

مصري في بلاد الفرنجة.

قريباً اقرأ مقالاتي على It-scoop

#8

في البرمجيات هناك مصطلح يسمى بـ Scaling يمكنك بدء البحث به .

تم تعديل هذه المشاركة بواسطة ahmad123 في 29 ديسمبر 2011 في 23:39

#9

من الغريب ان المواقع في اول نشوء لها

هي عبارة عن لغة وقاعدة بيانات عادية كـ mysql و sql server

اما عندما تنجح وتشترى تصبح معقدة التركيب كالذرات وبهذا يصعب تقليده

فاليس بوك كان يستخدم فقط php اما الان xhp وهي مطورة عن لغة php وتتحول الى C++ لكي يصبح الموقع اكثر قوة وسرعة وايضا تستخدم قاعدة بيانات Cassandra ولغة ajax لكي يصبح اطرازه يواكب العصر الجديد

كنظام الـ comments لايحتاج الى تحديث الصفحة سواء للكاتب او للقارئ وهذا ماجعله ينجح ويكثر استخدامه

المهم : عندما تصبح تركيبة الموقع معقدة يصعب تقليدها ويصعب اختراقها

فهناك سكربتات مجانية للتواصل الاجتماعية ولكنها سيئة ولاتقارن ببرمجية الفيس بوك فلو كانت هناك برمجية شبيهة بالفيس بوك لكان خسر من زمااااااااان

وايضا جوجل : هناك برمجيات معقدة كثيرة ومنها البحث عن المواقع

فهناك ناس تقول ان جوجل عبارة عن نموذج فيه حقل وزر ويبحث عن قاعدة بيانات بسيطة وتعتقد ان هناك اناس تضيف كل هذه المواقع

مع انه هذا خطا

جوجل فيه عناكب ارشفة معقدة جدا ومستحيل تقليدها

−2
#10

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

الطريقة المثلى للتمدد الطولي, هي ببناء asynchronous system بحيث يكون هناك piping أو إذا كان نظاماً ضخماً كفاية ستجد أن هناك نظام مستقل يرتب عملية تدفق البيانات. التمدد العرضي, يكون بأن تصمم النظام حسب معالجة البيانات, بمعنى أنك تحدد تدفق البيانات Data Flow. ثم تقوم بإسناد الوحدات الحسابية و تكوين نظم تابعة للنظام الأساسي في كل node بحيث تقوم بمعالجة البيانات.

هذه الفكرة كـ best practice. و لكن ستجد الكثير من التصاميم و كل نظام و له احتياجات و متطلبات خاصة. Google أحد الأمثلة التي تتبع التصميم الذي تكلمنا عنه. و لكنهم تخطوا المبادئ بشكل واضح فلديهم نظام ملفات خاص لهذا النظام!!!!!!!

عندما تخرج من التمدد الطولي shared memory, إلى التمدد العرضي distributed memory فستحتاج للتفكير في وسائل نقل البيانات, و الطريقة المثلى للتواصل بين الوحدات الحسابية, و هذا موضوع لوحده!

تحياتي...

3

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…