ما الذي يستخدمه Discourse Redis من أجله؟

Currently my Discourse install uses a DigitalOcean managed PostgreSQL database and a DigitalOcean managed Redis instance. Is the managed Redis server necessary?

Does Discourse store anything permanent in Redis or is it only used for caching/other kinds of temporary data?

My current setup (definitely overkill but it will make scaling easy if it’s needed one day):

  • DigitalOcean managed PostgreSQL server
  • DigitalOcean managed Redis instance
  • DigitalOcean Load Balancer
  • Two DigitalOcean droplets, each running Discourse

A simpler setup I was thinking about is:

  • DigitalOcean managed PostgreSQL server
  • A single server running both Redis and the Discourse application with a floating IP to fallback to a backup server if needed.

My current setup can seemlessly swap web servers without the user noticing because of the external Redis server, I think the simpler setup will log out users if the fallback server is needed, is this the main downside of having Redis on the same server as Discourse?

Thanks,
Francis

7 إعجابات

+1 لدي نفس السؤال، وأود حقًا أن أرى إذا كان هناك من يتفضل بشرح قليل عن Redis وDiscourse :kissing_smiling_eyes:

يستخدم ديسكورش سايدكيك، وهو مُجدول مهام مفتوح المصدر job scheduler مكتوب بلغة Ruby. بشكل عام (وبشكل افتراضي)، ينفذ سايدكيك المهام فقط ولا يقوم بجدولتها، أو على الأقل هذا ما تقوله المراجع (ربما تغيرت الأمور؟)؛ لكن فهمي هو أن النسخة المؤسسية من سايدكيك تأتي مع ميزة الجدولة جاهزة للاستخدام (OOTB).

يستخدم سايدكيك Redis كخزن لبنية بيانات في الذاكرة، وهو مكتوب أيضًا بلغة Ruby. يقرأ سايدكيك المهام من طابور Redis، باستخدام نموذج الأول يدخل أول يخرج (FIFO)، لمعالجة المهام. تتم معالجة المهام بشكل غير متزامن، مما يسمح لخيط الويب بخدمة الطلبات المباشرة بدلاً من معالجة المهام الثقيلة التي يمكن “جدولتها” للتشغيل في الخلفية.

يُوصف سايدكيك بأنه “برمجية معالجة طوابير معروفة جيدًا”، ويُستخدمه ديسكورش في مهام مصممة للعمل كوظائف خلفية ولا تُنفذ مباشرة ضمن طلبات تطبيق الويب.

يمكنك استكشاف الأنواع العديدة للمهام التي ينفذها ديسكورش، استنادًا إلى هذه النظرة الموجزة أعلاه، في مستودع ديسكورش:

قد يستخدم ديسكورش Redis في أجزاء أخرى من البنية؛ لكن بشكل عام، الاستخدام الرئيسي لـ Redis هو كـ “رفيق” لسايدكيك، أي “رجل المهام”. بالتأكيد يمكن لأعضاء فريق ديسكورش الأكثر خبرة مني في بنية ديسكورش عالية المستوى (HLA) تقديم تفاصيل أكثر حول كيفية استخدام Redis داخل بنية ديسكورش عالية المستوى.

أتمنى أن يكون هذا مفيدًا.

9 إعجابات

هذا منشور قديم بعض الشيء، لكنني اعتقدت أنه يجب أن أوسع على هذه الإجابة لأنني واجهت هذه المشكلة أثناء البحث عن بعض الأمور الأخرى المتعلقة بـ Discourse و Redis.

إليك إجابة من أحد أعضاء الفريق حول ما الذي يستخدمه Discourse Redis له غير Sidekiq:

5 إعجابات

مرحباً @Francis، ما هو تقدير الفوترة الخاص بك لجميع خدمات DigitalOcean؟ أنا فضولي فقط لأنني أخطط لتثبيت نفس الخدمة على Google Cloud (200 دولار مجانًا). سعر خدمة Discourse SaaS خارج ميزانيتي.

تخمين تقريبي هو أن موازن التحميل و redis و postgres يكلف 50 دولارًا شهريًا بالإضافة إلى أي شيء تدفعه مقابل القطرة (القطرات).

إذا كنت قلقًا بشأن التكلفة، فأنا أوصي بقطرة بحجم 2 جيجابايت وضاعفها إذا لم تكن كافية.