Dendrite, ein Kommunikationsserver mit der Implementierung des Matrix-Protokolls

Dendrite ist ein Kommunikationsserver das ist sein entwickelt vom Matrix-Team und es ist als Implementierung der zweiten Generation von Matrix-Serverkomponenten positioniert.

Im Gegensatz zum in Python geschriebenen Synapse-Referenzserver wird der Dendrite-Code in Go entwickelt. Beide offiziellen Implementierungen werden unter der Apache 2.0-Lizenz vertrieben.

Im Rahmen des Ruma-Projekts wird eine separate Version des Matrix-Servers in der Sprache Rust entwickelt, die unter der MIT-Lizenz vertrieben wird.

Der neue Server zielt darauf ab, hohe Effizienz, Zuverlässigkeit und Skalierbarkeit zu erreichen.

Über Dendriten

Dendrit ist Synapse in Bezug auf Leistung voraus, Der Betrieb erfordert viel weniger Speicher und kann durch Lastausgleich über mehrere Knoten skaliert werden.

Dendritenarchitektur unterstützt die horizontale Skalierung und basiert auf der Trennung von Controllern in Form von Microservices. Dabei hat jede Instanz eines Mikrodienstes ihre eigenen Tabellen in der Datenbank.

Der Load Balancer ist für das Senden von Anrufen an Microservices verantwortlich. Threads (Go-Routinen) werden verwendet, um Operationen im Code zu parallelisieren, wodurch die Ressourcen aller CPU-Kerne verwendet werden können, ohne sie in separate Prozesse aufzuteilen.

Dendrit unterstützt die Arbeit in zwei Modi: monolithisch und mehrkomponentig (Polylith).

  • Im monolithischen Modus Alle Microservices sind in einer ausführbaren Datei verknüpft, werden in einem Prozess ausgeführt und interagieren direkt miteinander.
  • Im Mehrkomponentenmodus (Cluster) können Microservices auch bei Diversity auf verschiedenen Knoten separat gestartet werden. Die Komponenteninteraktion im Mehrkomponentenmodus erfolgt über die interne HTTP-API und die Apache Kafka-Plattform.

Die Entwicklung basiert auf den Spezifikationen des Matrix-Protokolls und verwendet zwei Testreihen: die gängigen Systemtest-Tests mit Synapse und die neue Complement-Suite.

In der aktuellen Entwicklungsphase besteht Dendrite 56% der Tests erfolgreich der Client-Server-APIs und 77% der Verbund-API-Tests, während die tatsächliche Funktionsabdeckung für die Client-Server-API auf 70% und für die Verbund-API auf 95% geschätzt wird.

Die Beta-Phase zeigt an, dass Dendrite für die erste Bereitstellung bereit ist und der Übergang zur Entwicklung mit regelmäßigen Neuerscheinungen. Zwischen den Releases wird das Datenbankspeicherschema jetzt aktualisiert (im Gegensatz zur Installation von Chunks aus dem Repository geht der Inhalt der Datenbank nach der Aktualisierung nicht verloren).

Änderungen, die die Abwärtskompatibilität beeinträchtigen, die Datenbankstruktur ändern oder Konfigurationsänderungen erfordern, werden nur in Hauptversionen angeboten.

Für den Augenblick Es wird empfohlen, Dendrite im monolithischen Modus zusammen mit PostgreSQL DBMS zu verwenden um kleine Heimserver und P2P-Knoten zu erstellen. Die Verwendung von SQLite wird aufgrund ungelöster Probleme bei der Behandlung gleichzeitiger Vorgänge noch nicht empfohlen.

Funktionen noch nicht implementiert in Dendrite umfassen: Nachrichtenbestätigungen, Lesezeichen, Push-Benachrichtigungen, OpenID, E-Mail-Link, serverseitige Suche, Benutzerverzeichnis, Benutzer-Ignorierlisten, Erstellung von Gruppen und Communitys, Bewertung der Online-Präsenz eines Benutzers, Gast-Eingaben, Interaktion mit Netzwerken von Drittanbietern.

Grundlegende Funktionen für den Betrieb von Chatrooms (Erstellung, Einladungen, Authentifizierungsregeln), Mittel zum Zusammenschluss von Teilnehmern in Räumen, Synchronisierung von Ereignissen nach der Rückkehr aus dem Offline-Modus, Konten, Profile, Wählanzeige, Herunterladen und Hochladen von Bearbeitungsdateien (Medien-API) stehen für die Verwendung von Nachrichten, ACLs, Beschriftungen und End-to-End-Verschlüsselungsgeräten sowie Schlüssellisten zur Verfügung.

Daran erinnern, dass Die Plattform zur Organisation der dezentralen Kommunikation Matrix verwendet HTTPS + JSON als Transport mit der Fähigkeit, WebSockets oder ein auf CoAP + Noise basierendes Protokoll zu verwenden. Das System besteht aus einer Gemeinschaft von Servern, die miteinander interagieren können und in einem gemeinsamen dezentralen Netzwerk zusammengefasst sind.

Nachrichten werden auf allen Servern repliziert mit dem die Messaging-Teilnehmer verbunden sind. Nachrichten werden zwischen Servern auf ähnliche Weise weitergegeben wie Commits zwischen Git-Repositorys.

Quelle: https://matrix.org


Als bevorzugte Quelle in Google hinzufügen