ما المقصود بكل خيار
في المزامنة اللحظية، يُرسَل كل تغيير في نظام إلى النظام الآخر لحظة حدوثه، في غضون ثوانٍ عادةً، عبر إشعارات الويب (Webhooks) أو تدفقات الأحداث أو الاستدعاءات المباشرة لواجهات البرمجة (API). والأدق أن نسميها شبه لحظية، فهناك دائماً قدر من التأخير.
أما في المزامنة المجدولة، وتسمى أيضاً المزامنة على دفعات، فتعمل مهمة في أوقات محددة، كل خمس عشرة دقيقة مثلاً أو مرة كل ليلة. تجمع ما تغيّر منذ آخر تشغيل، وتنقله دفعة واحدة.
مقارنة سريعة بين الخيارين
| المزامنة اللحظية | المزامنة المجدولة | |
|---|---|---|
| حداثة البيانات | ثوانٍ | قديمة بقدر الفترة بين كل تشغيلين |
| ما يطلقها | كل تغيير لحظة حدوثه | الجدول الزمني |
| حين يتوقف النظام الآخر | يجب وضع الأحداث في طابور انتظار وإعادة المحاولة، وإلا ضاعت | يكمل التشغيل التالي من حيث توقف السابق |
| الحمل على الأنظمة | مستمر، على أجزاء صغيرة | على دفعات، يمكن توقيتها في ساعات الهدوء |
| ترتيب الأحداث | يجب التعامل معه، فقد تصل الأحداث بغير ترتيبها | أبسط عادةً، لأن التشغيل يرى الحالة النهائية |
| اكتشاف المشكلة | أصعب. حدث واحد أخطأ بين آلاف الأحداث | أسهل. تشغيل واحد فشل، ويمكن إعادته |
| تكلفة البناء والتشغيل | أعلى | أقل |
حدّد مدى الحداثة التي تحتاج إليها البيانات
لا يفيدك أن تسأل هل المزامنة اللحظية ميزة جميلة. اسأل: ما الذي يسوء إن كان عمر البيانات عشر دقائق، أو ساعة، أو يوماً؟ واطرح هذا السؤال على كل مسار بيانات.
| البيانات | من يتصرف بناءً عليها، ومتى | الجواب المعتاد |
|---|---|---|
| المخزون المتاح للبيع | العميل، عند الدفع | لحظية، وإلا بيع المنتج مرتين |
| حالة الدفع | العميل ونظام الطلبات، فوراً | لحظية |
| تذكرة دعم جديدة | موظف الدعم، خلال دقائق | لحظية، أو كل بضع دقائق |
| عميل محتمل جديد من نموذج | مندوب المبيعات، خلال ساعة | كلتاهما تصلح، وتكفي عادةً فترة قصيرة |
| أوصاف المنتجات وأسعارها | العملاء، على مدى أيام | مجدولة، ما لم تتغير الأسعار خلال اليوم |
| الطلبات إلى المحاسبة | المحاسب، في آخر اليوم أو الشهر | مجدولة |
| بيانات التقارير | المديرون، في صباح اليوم التالي | مجدولة، كل ليلة |
متى يناسبك كل خيار
اختر المزامنة اللحظية حين
- يتصرف شخص أو نظام بناءً على البيانات خلال ثوانٍ أو دقائق
- تسبب البيانات القديمة خطأ ظاهراً، مثل البيع فوق المخزون أو الحجز المزدوج
- ينتظر المستخدم تأكيداً على الشاشة
- يوفر النظامان إشعارات الويب أو الأحداث
- تستطيع تشغيل طوابير الانتظار وإعادة المحاولات والمراقبة
اختر المزامنة المجدولة حين
- تُستخدم البيانات بعد ساعات أو أيام
- تكون الكميات كبيرة، ويمكن نقلها دفعة واحدة في أوقات الهدوء
- لا يوفر أحد النظامين إلا تصدير الملفات أو واجهة برمجة بطيئة
- تهمك البساطة وسهولة الاسترداد أكثر من السرعة
- يمكن مطابقة كل تشغيل مع الإجماليات
وهناك حل وسط مفيد: مهمة مجدولة تعمل كل بضع دقائق تعطيك بيانات حديثة بما يكفي لأغراض كثيرة، مع معظم بساطة المزامنة على دفعات.
ما تحتاج إليه المزامنة اللحظية لتكون موثوقة
من السهل عرض المزامنة اللحظية في تجربة، ومن الصعب جعلها موثوقة. وهذه هي الأجزاء التي تصنع الفرق.
- طابور انتظار. تُحفظ الأحداث حتى تُعالَج، فلا يضيعها انقطاع في أحد الجانبين
- إعادة محاولة بحدود. تُعاد محاولة الأحداث الفاشلة، وتُنحّى جانباً ليراجعها شخص بعد فشل متكرر
- الحماية من التكرار. قد يصل الحدث نفسه مرتين، ويجب ألا تضر معالجته مرتين
- الترتيب. قد يصل التحديث قبل السجل الذي يعدّله، ويجب أن يتعامل الربط مع ذلك
- المراقبة. يصل تنبيه إلى شخص حين تتراكم الأحداث أو تفشل
- مهمة مطابقة. مقارنة مجدولة بين النظامين تلتقط ما فات الأحداث
البند الأخير يستحق الانتباه. فالربط اللحظي الموثوق يكاد يتضمن دائماً فحصاً مجدولاً أيضاً، والنهجان شريكان في أحيان كثيرة أكثر مما هما بديلان.
مثال تطبيقي
تاجر أثاث لديه متجر ومستودع ونظام محاسبة
التاجر افتراضي، وكان أول طلب له أن يجعل كل شيء لحظياً.
- أرصدة المخزونتظهر للعملاء وتُحجز عند الدفع. وتأخير ساعة يعني بيع منتجات نفدت. القرار: لحظية، مع مطابقة كل ليلة.
- حالة الطلبيتحقق منها العملاء بضع مرات في اليوم. القرار: مجدولة، كل عشر دقائق.
- كتالوج المنتجاتيحدّثه فريق المشتريات كل أسبوع. القرار: مجدولة، كل ليلة.
- الفواتير إلى المحاسبةتُراجَع في نهاية كل يوم. القرار: مجدولة، مرة كل مساء، مع مطابقتها بإجمالي طلبات اليوم.
مسار واحد من أربعة احتاج إلى المزامنة اللحظية. ولو بُنيت المسارات الأربعة كلها بهذه الطريقة، لتضاعفت التكلفة ونقاط الفشل دون فائدة يلاحظها أحد.
قائمة تحقق لكل مسار بيانات
لحظية أم مجدولة
0 من 7 منجزةماذا تفعل الآن
اكتب مسارات بياناتك، ودوّن أمام كل منها العمر المقبول لبياناته. فهذا العمود يحسم معظم التصميم. وتغطي مقارنتنا بين الربط المخصص والموصلات الجاهزة النصف الآخر من القرار.
وتشرح صفحة تطوير واجهات البرمجة (API) وصفحة هندسة الأنظمة الخلفية كيف نبني عمليات الربط التي يجب أن يُعتمد عليها. ويمكنك كذلك أن ترسل إلينا قائمة مساراتك، وسنحدد لك ما كنا سنجعله لحظياً منها.
أسئلة شائعة
هل المزامنة اللحظية أفضل دائماً؟
لا. فهي أفضل فقط حيث يتصرف شخص بناءً على البيانات بسرعة. وفي غير ذلك تضيف تكلفة وأجزاء متحركة وطرقاً للفشل، دون فائدة يلاحظها المستخدم. أما المزامنة المجدولة فأبسط في البناء، وأسهل في الاسترداد والتحقق، وهذا يجعلها الخيار الافتراضي الأفضل.
كم مرة ينبغي أن تعمل المزامنة المجدولة؟
بقدر ما تحتاج إليه من حداثة البيانات، ولا أكثر. فالتشغيل الليلي يناسب التقارير والمحاسبة، والتشغيل كل بضع دقائق يناسب البيانات التشغيلية التي يراجعها الناس خلال اليوم. أما الفترات القصيرة جداً مع مجموعات البيانات الكبيرة فقد تُجهد النظام المصدر، لذلك اجعل الفترة مناسبة لطريقة استخدام البيانات.
ما هي إشعارات الويب (Webhooks)؟
إشعار الويب رسالة يرسلها نظام إلى آخر حين يحدث شيء ما، مثل طلب جديد. وهو أكثر الطرق شيوعاً للمزامنة اللحظية بين تطبيقات الويب. وقد تتأخر هذه الرسائل أو تتكرر أو تضيع أحياناً، ولهذا يضيف الربط الموثوق طوابير انتظار، وحماية من التكرار، ومطابقة دورية.
هل نستطيع التحول من المزامنة المجدولة إلى اللحظية لاحقاً؟
نعم. فالبدء بمزامنة مجدولة طريقة سليمة لتشغيل الأنظمة معاً ومعرفة أين تهم حداثة البيانات. ثم يمكن نقل مسارات بعينها إلى الأحداث. وكثيراً ما تبقى المهمة المجدولة في مكانها، لتكون المطابقة التي تكشف ما يفوت المسار اللحظي.

