البيانات الأساسيةالوقت الفعلي

دردشة وإشعارات في الوقت الفعلي

وزّع الرسائل على كل عميل متصل في الوقت الفعلي، مع قنوات مجزأة للعناقيد وتدفقات للسجل.

نشر واحد، كل المشتركين
1
قنوات للعناقيد
مجزأة
مع التدفقات
+السجل
الخطوة 1 من 5
الخوادم تشترك

يشترك كل خادم WebSocket في الغرف التي يوجد فيها مستخدموه المتصلون.

جلسة توضيحيةplaying
# الخوادم تشترك
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

عرض متحرك بأوامر HotKV حقيقية وردود توضيحية. انقر على أي خطوة للانتقال إليها. تبقى الأوامر والردود بالإنجليزية، تمامًا كما تكتبها وتراها في HotKV.

المشكلة

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

كيف يتعامل HotKV معها

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

خطوة بخطوة

ما يحدث، أمرًا بأمر

  1. 01

    الخوادم تشترك

    يشترك كل خادم WebSocket في الغرف التي يوجد فيها مستخدموه المتصلون.

    SUBSCRIBE room:42
  2. 02

    Alice ترسل رسالة

    ينشر خادمها مرة واحدة. والرد هو عدد المشتركين الذين تلقوها.

    PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"
  3. 03

    احتفظ بالسجل

    تُلحق الرسالة أيضًا بتدفق الغرفة، بحد أقصى آخر 1000 رسالة.

    XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"
  4. 04

    Bob يعيد الاتصال لاحقًا

    يقرأ آخر 50 رسالة من التدفق، ثم ينتقل إلى البث المباشر على القناة.

    XREVRANGE room:42:history + - COUNT 50
  5. 05

    قنوات مجزأة في عنقود

    في وضع العنقود، يبقي SPUBLISH الرسالة على العقدة التي تملك القناة.

    SPUBLISH room:{42}:typing "alice"
أين يناسب

سيناريوهات من الواقع

دردشة الفرق ودردشة الدعم

تتوزع الرسائل على كل خادم يحمل اتصال عضو، ويمنح التدفق القادمين الجدد الرسائل السابقة.

الإشعارات المباشرة

تُدفع تحديثات الطلبات والإشارات والتنبيهات إلى المتصفح لحظة حدوثها.

التطبيقات التعاونية

تُبث مواقع المؤشرات ومؤشرات الكتابة على قنوات قصيرة العمر.

مدمج

ما تحصل عليه

التوزيع

نشر واحد يصل إلى كل مشترك.

PUBLISHSUBSCRIBE

الاشتراك بالأنماط

اشترك في room:* لتتلقى كل الغرف.

PSUBSCRIBE

Pub/sub مجزأ

تبقى القنوات على العقدة التي تملكها في العنقود.

SPUBLISHSSUBSCRIBE

السجل

اقرن القناة بتدفق محدود الحجم للرسائل التي فاتت المستخدمين.

XADDXREVRANGE

أسئلة شائعة

هل تُخزَّن رسائل pub/sub؟

لا. يسلّم pub/sub الرسائل لمن هو مشترك في تلك اللحظة. استخدم تدفقًا بجوار القناة إذا احتاج المستخدمون إلى السجل.

هل يعمل في عنقود؟

نعم. استخدم pub/sub المجزأ (SPUBLISH وSSUBSCRIBE) لتبقى حركة كل قناة على العقدة التي تملكها.

هل يمكنني تلقي إشعار عند تغير المفاتيح؟

نعم. تنشر إشعارات keyspace أحداثًا لتغييرات المفاتيح. راجع الوثائق الخاصة بإشعارات keyspace.

حالات استخدام ذات صلة

جرّبه على عبء عملك

يتحدث HotKV بروتوكول Redis، لذا يمكنك توجيه عميل موجود إليه وتشغيل هذه الأوامر نفسها.