حاليًا، يعتمد تثبيت Discourse الخاص بي على قاعدة بيانات PostgreSQL المدارة من DigitalOcean وعلى مثيل Redis المدارة من DigitalOcean. هل خادم Redis المدارة ضروري؟
هل يخزن Discourse أي بيانات دائمة في Redis أم يُستخدم فقط للتخزين المؤقت أو أنواع أخرى من البيانات المؤقتة؟
إعدادي الحالي (مبالغة بالتأكيد، لكنه سيجعل التوسع سهلاً إذا لزم الأمر يومًا ما):
خادم PostgreSQL مدارة من DigitalOcean
مثيل Redis مدارة من DigitalOcean
موزع تحميل (Load Balancer) من DigitalOcean
قطرتان (Droplets) من DigitalOcean، يعمل كل منهما على تشغيل Discourse
إعداد أبسط كنت أفكر فيه هو:
خادم PostgreSQL مدارة من DigitalOcean
خادم واحد يشغل كلًا من Redis وتطبيق Discourse مع عنوان IP عائم للعودة إلى خادم احتياطي إذا لزم الأمر.
يبدو أن إعدادي الحالي يسمح بتبديل خوادم الويب بسلاسة دون أن يلاحظ المستخدم ذلك بسبب خادم Redis الخارجي. أعتقد أن الإعداد الأبسط سيسبب تسجيل خروج المستخدمين إذا لزم اللجوء إلى الخادم الاحتياطي. هل هذه هي العيب الرئيسي في وجود Redis على نفس الخادم الذي يعمل عليه Discourse؟
يستخدم ديسكورش سايدكيك، وهو مُجدول مهام مفتوح المصدر job scheduler مكتوب بلغة Ruby. بشكل عام (وبشكل افتراضي)، ينفذ سايدكيك المهام فقط ولا يقوم بجدولتها، أو على الأقل هذا ما تقوله المراجع (ربما تغيرت الأمور؟)؛ لكن فهمي هو أن النسخة المؤسسية من سايدكيك تأتي مع ميزة الجدولة جاهزة للاستخدام (OOTB).
يستخدم سايدكيك Redis كخزن لبنية بيانات في الذاكرة، وهو مكتوب أيضًا بلغة Ruby. يقرأ سايدكيك المهام من طابور Redis، باستخدام نموذج الأول يدخل أول يخرج (FIFO)، لمعالجة المهام. تتم معالجة المهام بشكل غير متزامن، مما يسمح لخيط الويب بخدمة الطلبات المباشرة بدلاً من معالجة المهام الثقيلة التي يمكن “جدولتها” للتشغيل في الخلفية.
يُوصف سايدكيك بأنه “برمجية معالجة طوابير معروفة جيدًا”، ويُستخدمه ديسكورش في مهام مصممة للعمل كوظائف خلفية ولا تُنفذ مباشرة ضمن طلبات تطبيق الويب.
يمكنك استكشاف الأنواع العديدة للمهام التي ينفذها ديسكورش، استنادًا إلى هذه النظرة الموجزة أعلاه، في مستودع ديسكورش:
قد يستخدم ديسكورش Redis في أجزاء أخرى من البنية؛ لكن بشكل عام، الاستخدام الرئيسي لـ Redis هو كـ “رفيق” لسايدكيك، أي “رجل المهام”. بالتأكيد يمكن لأعضاء فريق ديسكورش الأكثر خبرة مني في بنية ديسكورش عالية المستوى (HLA) تقديم تفاصيل أكثر حول كيفية استخدام Redis داخل بنية ديسكورش عالية المستوى.
هذا منشور قديم بعض الشيء، لكنني اعتقدت أنه يجب أن أوسع على هذه الإجابة لأنني واجهت هذه المشكلة أثناء البحث عن بعض الأمور الأخرى المتعلقة بـ Discourse و Redis.
إليك إجابة من أحد أعضاء الفريق حول ما الذي يستخدمه Discourse Redis له غير Sidekiq:
مرحباً @Francis، ما هو تقدير الفوترة الخاص بك لجميع خدمات DigitalOcean؟ أنا فضولي فقط لأنني أخطط لتثبيت نفس الخدمة على Google Cloud (200 دولار مجانًا). سعر خدمة Discourse SaaS خارج ميزانيتي.