كيف يقوم فيس بوك كمثال بإرسال التحذيثات لعدد من الأعضاء فقط ؟

السلام عليكم ، مرحبا

مثلا عندما تم تغيير شكل الفيس بوك للشكل الجديد ، حصل مجموعة من الأعضاء

في البداية على تحذيث الشكل الجديد ، ثم بعدها دوريا يتم ارسال التحذيث كل مرة لعدد معين

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

فإنه ستظهر للجميع مرة واحدة


في المواقع الكبيرة لا يقبع التطبيق علي سيرفر واحد فقط وإنما مجموعة كبيرة جدا من السيرفرات مقسمة جغرافيا.

بهذه الطريقة يمكن إرسال التحديث مثلا لدولة واحدة ولتكن مصر عن طريق تحديث مجموعة السيرفرات التي تخدمها.

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

هذا الأسلوب يدعي Canary Release

هناك أسلوب اخر أيضا يدعي Feature Toggle وهو أن يكون هناك Toggle في الكود ليحدد أي مسار سيسلكه وبالتالي تستطيع تحديث كامل البنية التحتية بالكود الجديد ولكن من خلال الإعدادات تستطيع تحديد من يحصل علي الميزة الجديدة ومن لا يحصل عليها.

أيضا يمكن الجمع بين الطريقتين، يمكنك القراءة أكثر عن طريق نسخ إسم الطريقتين والبحث في جوجل

شكرا لك ، بالنسبة لمسألة Canary Release هل يتم رفع كافة ملفات التطبيق لكل سيرفر

ام يتم تقسيم ملفات التطبيق على كل سيرفر ؟

بمعنى اخر هل كل سيرفر يجب رفع نفس الملفات كل مرة ؟

نعم يتم رفع كامل ملفات التطبيق علي السيرفر، أنصحك القراءة في مبدأ Load Balancing

نحن نستخدم نظام مشابه ولكن علي مستوي أقل طبعا من شركة مثل الفيس بوك

فكرة Load Balancing باختصار مخل هو أنه يكون لديك مثلا سيرفرين عليهم نفس الكود وتقوم بتوزيع الحمل عن طريق عدد من الإعدادات علي حسب مايناسبك، مثلا عندما يأتي زائر جديد سأوجهه للسيرفر الأقل حملا أو سأوزع الحمل بالتساوي.

في هذه الحالة ليس من المنطقي أن يجد الزائر شيئا مختلفا كلما يتم تحويله من سيرفر لاخر، طبعا هناك بعض التحديات مثل مثلا رفع ملفات المستخدم، في هذه الحالة لا يمكن استخدام أيا من السيرفرين ولكن يتم اختيار خدمة أخري للقيام بهذا الغرض فمثلا اذا كنت تستخدم Amazon Cloud فهناك خدمة Amazon S3.