Matrix-Server Veröffentlichung , der den Ăbergang der Entwicklung in die Phase des Beta-Tests markierte. Dendrite wird vom Hauptteam der Entwickler der dezentralen Kommunikationsplattform Matrix weiterentwickelt und positioniert sich als Implementierung der zweiten Generation von Serverkomponenten von Matrix. Im Gegensatz zum Referenzserver , der in Python geschrieben wurde, ist der Code von Dendrite in Go. Beide offiziellen Implementierungen werden unter der Lizenz Apache 2.0 verbreitet. Im Rahmen des Projekts wird eine alternative Version des Matrix-Servers in Rust parallel entwickelt, die unterliegt der MIT-Lizenz.
Der neue Server zielt darauf ab, eine hohe Effizienz, ZuverlĂ€ssigkeit und Skalierbarkeit zu erreichen. Dendrite ĂŒbertrifft Synapse in Bezug auf die Leistung, benötigt fĂŒr seinen Betrieb erheblich weniger Speicher und kann ĂŒber Lastverteilung auf mehrere Knoten skaliert werden. Die Architektur von Dendrite unterstĂŒtzt horizontale Skalierung und basiert auf der Trennung von Handlers in Form von Microservices, wobei jede Instanz des Microservices ihre eigenen Tabellen in der Datenbank hat. Die Lastverteilung der Anfragen an die Microservices erfolgt durch den Lastenausgleich. FĂŒr die Parallelisierung von Operationen im Code werden Goroutinen verwendet, die es ermöglichen, die Ressourcen aller CPU-Kerne ohne Trennung in separate Prozesse zu nutzen.
Dendrite unterstĂŒtzt den Betrieb in zwei Modi â monolithisch und mehrkomponentig (Polylith). Im monolithischen Modus sind alle Microservices in einer ausfĂŒhrbaren Datei zusammengefasst, laufen in einem Prozess und interagieren direkt miteinander. Im mehrkomponentigen (Cluster-)Modus können Microservices getrennt gestartet werden, auch verteilt auf verschiedene Knoten. Die Interaktion der Komponenten im
mehrkomponentigen Modus erfolgt ĂŒber eine interne HTTP-API und die Plattform .
Die Entwicklung erfolgt auf der Grundlage der Spezifikationen des Matrix-Protokolls und unter Verwendung von zwei Test-Suites â allgemeinen Tests mit Synapse und einer neuen Suite . In der aktuellen Entwicklungsphase besteht Dendrite erfolgreich 56 % der Tests des Client-Server-API und 77 % der Tests des Föderations-API, wobei der tatsĂ€chliche Funktionsabdeckungsgrad bei 70 % fĂŒr die Client-Server-API und 95 % fĂŒr die Föderations-API geschĂ€tzt wird.
Die Beta-Testphase zeigt, dass Dendrite fĂŒr die initiale Implementierung bereit ist und die Entwicklung mit der regelmĂ€Ăigen Erstellung neuer Versionen fortschreiten kann. Zwischen den Versionen wird jetzt ein Update des Datenbankschemas (im Gegensatz zur Installation von Snapshots aus dem Repository, bei der der Inhalt der Datenbank nach dem Update verloren gehen kann) sichergestellt. Ănderungen, die die AbwĂ€rtskompatibilitĂ€t beeintrĂ€chtigen, die Struktur der Datenbank Ă€ndern oder eine Anpassung der Konfiguration erfordern, werden nur in signifikanten Versionen vorgeschlagen. Dendrite wird derzeit empfohlen, im monolithischen Modus zusammen mit der PostgreSQL-Datenbank zur Erstellung kleiner Ursprungsserver (homeserver) und P2P-Knoten genutzt zu werden. Die Verwendung von SQLite wird vorĂŒbergehend aufgrund ungelöster Probleme bei der Verarbeitung gleichzeitiger Operationen nicht empfohlen.
Unter den bisher in Dendrite nicht realisierten Funktionen sind die BestÀtigung des Empfangs von Nachrichten, LesebestÀtigungen, Push-Benachrichtigungen, OpenID, E-Mail-Bindungen, serverseitige Suche, ein Benutzerverzeichnis, Benutzer-Blocklisten, die Erstellung von Gruppen und Gemeinschaften, die Bewertung der Online-PrÀsenz eines Benutzers, GÀstezugÀnge sowie die Interaktion mit externen Netzwerken zu erwÀhnen.
VerfĂŒgbar sind grundlegende Funktionen fĂŒr die Arbeit mit Chat-RĂ€umen (Erstellung, Einladungen, Authentifizierungsregeln), Mittel zur Föderation von Teilnehmern in den RĂ€umen, Synchronisation von Ereignissen nach der RĂŒckkehr aus dem Offline-Modus, Konten, Profile, Indikatoren fĂŒr die Eingabe, das Hochladen und Herunterladen von Dateien (Media API), das Bearbeiten von Nachrichten, ACL, Tag-Bindungen sowie die Verwaltung von GerĂ€ten und SchlĂŒsseln fĂŒr die End-to-End-VerschlĂŒsselung.
Erinnern wir uns daran, dass die Plattform zur Organisation dezentraler Kommunikation Matrix HTTPS+JSON als Transportprotokoll verwendet, wobei WebSockets oder ein Protokoll auf Basis von +. Das System bildet ein Netzwerk von Servern, die miteinander interagieren können und in einem gemeinsamen dezentralen Netzwerk verbunden sind. Nachrichten werden auf alle Server repliziert, die mit den Teilnehmern des Nachrichtenaustauschs verbunden sind. Die Nachrichten verbreiten sich ĂŒber die Server, Ă€hnlich wie Commits zwischen Git-Repositories verbreitet werden. Im Falle einer vorĂŒbergehenden Serverabschaltung gehen die Nachrichten nicht verloren, sondern werden den Benutzern nach Wiederherstellung des Serverbetriebs zugestellt. Verschiedene Varianten von Benutzeridentifikatoren werden unterstĂŒtzt, darunter E-Mail, Telefonnummer, Facebook-Konto usw.
Im Netzwerk gibt es keinen einzelnen Ausfallpunkt oder eine zentrale Kontrolle ĂŒber die Nachrichten. Alle Server, die die Diskussion abdecken, sind gleichberechtigt.
Jeder Benutzer kann seinen eigenen Server starten und ihn mit dem gemeinsamen Netzwerk verbinden. Es ist möglich, fĂŒr die Interaktion von Matrix mit Systemen anderer Protokolle zu erstellen, beispielsweise Dienste fĂŒr die bidirektionale NachrichtenĂŒbertragung in IRC, Facebook, Telegram, Skype, Hangouts, E-Mail, WhatsApp und Slack. Neben dem sofortigen Austausch von Textnachrichten und der Organisation von Chats kann das System auch zum Dateitransfer, zum Versenden von Benachrichtigungen,
zur Organisation von Konferenzen, zur DurchfĂŒhrung von Sprach- und Videoanrufen verwendet werden. Auch erweiterte Funktionen wie Benachrichtigung ĂŒber TippaktivitĂ€ten, Online-PrĂ€senzbewertung, LesebestĂ€tigungen, Push-Benachrichtigungen, serverseitige Suche, Synchronisation von Verlauf und ZustĂ€nden der Clients werden unterstĂŒtzt.
Quelle: opennet.ru
