Dendrite ، خادم اتصالات مع تنفيذ بروتوكول Matrix

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

على عكس الخادم المرجعي Synapse المكتوب بلغة Python ، تم تطوير كود Dendrite في Go. يتم توزيع كلا التطبيقين الرسميين بموجب ترخيص Apache 2.0.

كجزء من مشروع Ruma ، يتم تطوير إصدار منفصل من خادم Matrix بلغة Rust ، والذي يتم توزيعه بموجب ترخيص MIT.

الخادم الجديد يهدف إلى تحقيق كفاءة عالية وموثوقية وقابلية التوسع.

حول Dendrite

التغصنات يتقدم على Synapse من حيث الأداء ، يتطلب ذاكرة أقل بكثير للعمل ويمكنه التوسع عن طريق موازنة الحمل عبر عقد متعددة.

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

موازن التحميل مسؤول عن إرسال المكالمات إلى الخدمات المصغرة. تُستخدم الخيوط (إجراءات Go) لموازنة العمليات في الكود ، مما يسمح باستخدام موارد جميع أنوية وحدة المعالجة المركزية دون تقسيمها إلى عمليات منفصلة.

التغصنات يدعم العمل في وضعين: متجانسة ومتعددة المكونات (بوليليث).

  • في الوضع الأحادي ، جميع الخدمات المصغرة مرتبطة في ملف قابل للتنفيذ ، وتعمل في عملية ، وتتفاعل مباشرة مع بعضها البعض.
  • في وضع متعدد المكونات (الكتلة) ، يمكن إطلاق الخدمات المصغرة بشكل منفصل ، حتى مع التنوع في العقد المختلفة. يتم تنفيذ تفاعل المكونات في الوضع متعدد المكونات باستخدام واجهة برمجة تطبيقات HTTP الداخلية ومنصة Apache Kafka.

يتم التطوير بناءً على مواصفات بروتوكول Matrix وباستخدام مجموعتين من الاختبارات: اختبارات sytest الشائعة مع Synapse ومجموعة Complement الجديدة.

في المرحلة الحالية من التطوير ، اجتاز Dendrite بنجاح 56 ٪ من الاختبارات من واجهات برمجة التطبيقات لخادم العميل و 77٪ من اختبارات API الفيدرالية ، بينما تقدر تغطية الوظائف الفعلية بنسبة 70٪ لواجهة برمجة التطبيقات لخادم العميل و 95٪ لواجهة برمجة تطبيقات الاتحاد.

تشير المرحلة التجريبية إلى أن Dendrite جاهز للنشر الأولي والانتقال إلى التطوير بإصدارات جديدة منتظمة. بين الإصدارات ، سيتم الآن تحديث مخطط تخزين قاعدة البيانات (على عكس تثبيت الأجزاء من المستودع ، بعد التحديث ، لن تضيع محتويات قاعدة البيانات).

التغييرات التي تكسر التوافق مع الإصدارات السابقة ، أو تغير بنية قاعدة البيانات ، أو تتطلب تغييرات في التكوين سيتم تقديمها فقط في الإصدارات الرئيسية.

في الوقت الحالي ، يوصى باستخدام Dendrite في وضع monolithic مع PostgreSQL DBMS لإنشاء خوادم منزلية صغيرة وعقد P2P. لا ينصح باستخدام SQLite حتى الآن بسبب المشكلات التي لم يتم حلها في معالجة العمليات المتزامنة.

الميزات التي لم يتم تنفيذها بعد في Dendrite وتشمل: إقرارات الرسائل ، والإشارات المرجعية ، وإشعارات الدفع ، و OpenID ، ورابط البريد الإلكتروني ، والبحث من جانب الخادم ، ودليل المستخدم ، وقوائم تجاهل المستخدم ، وإنشاء المجموعات والمجتمعات ، وتقييم تواجد المستخدم عبر الإنترنت ، مدخلات الضيف ، التفاعل مع شبكات الطرف الثالث.

الوظائف الأساسية لتشغيل غرف الدردشة (الإنشاء ، والدعوات ، وقواعد المصادقة) ، ووسائل اتحاد المشاركين في الغرف ، ومزامنة الأحداث بعد العودة من وضع عدم الاتصال ، والحسابات ، وملفات التعريف ، وإشارة الاتصال ، وتنزيل وتحميل تحرير الملفات (Media API) متاح لاستخدام الرسائل وقوائم ACL ووضع العلامات وجهاز التشفير من طرف إلى طرف وقوائم المفاتيح.

يذكر أن منصة تنظيم الاتصالات اللامركزية تستخدم Matrix HTTPS + JSON كوسيلة نقل مع القدرة على استخدام WebSockets أو بروتوكول قائم على CoAP + Noise. يتكون النظام كمجتمع من الخوادم التي يمكنها التفاعل مع بعضها البعض ويتم دمجها في شبكة لامركزية مشتركة.

يتم نسخ الرسائل عبر جميع الخوادم التي يتصل بها المشاركون في المراسلة. يتم نشر الرسائل بين الخوادم بطريقة مشابهة لكيفية نشر الالتزامات بين مستودعات Git.

مصدر: https://matrix.org


أضف كمصدر مفضل في جوجل