Veröffentlichung von Dendrite 0.1.0, einem Kommunikationsserver mit einer Implementierung des Matrix-Protokolls

Veröffentlicht Matrix-Server-Release Dendrit 0.1.0, was den Übergang der Entwicklung zur Beta-Testphase markierte. Dendrite wird vom Kernteam der Entwickler der dezentralen Kommunikationsplattform Matrix entwickelt und ist als Implementierung der zweiten Generation der Matrix-Serverkomponenten positioniert. Im Gegensatz zum Referenzserver Synapse, geschrieben in Python, Code Dendrite entwickelt sich in Go-Sprache. Beide offiziellen Implementierungen stehen unter der Apache 2.0-Lizenz. In den Grenzen des Projekts Ruma Eine Version des Matrix-Servers in der Rust-Sprache wird separat entwickelt vertrieben von unter der MIT-Lizenz.

Der neue Server soll eine hohe Effizienz, Zuverlässigkeit und Skalierbarkeit erreichen. Dendrite übertrifft Synapse, benötigt deutlich weniger Arbeitsspeicher und kann durch Lastausgleich über mehrere Knoten hinweg skaliert werden. Die Dendrite-Architektur unterstützt die horizontale Skalierung und basiert auf der Trennung von Handlern in Form von Microservices, wobei jede Microservice-Instanz über eigene Tabellen in der Datenbank verfügt. Der Load Balancer leitet Aufrufe an Microservices weiter. Um Vorgänge im Code zu parallelisieren, werden Threads (Go-Routinen) verwendet, die es ermöglichen, die Ressourcen aller CPU-Kerne zu nutzen, ohne sie in separate Prozesse aufzuteilen.

Veröffentlichung von Dendrite 0.1.0, einem Kommunikationsserver mit einer Implementierung des Matrix-Protokolls

Dendrite unterstützt zwei Modi: monolithisch und polylithisch. Im monolithischen Modus werden alle Microservices in einer einzigen ausführbaren Datei verpackt, in einem einzigen Prozess ausgeführt und interagieren direkt miteinander. Im Mehrkomponentenmodus (Cluster) können Microservices separat gestartet werden, auch über verschiedene Knoten verteilt. Zusammenspiel von Komponenten in
Der Mehrkomponentenmodus wird mithilfe der internen HTTP-API und -Plattform ausgeführt Apache Kafka.

Die Entwicklung erfolgt auf Basis der Matrix-Protokollspezifikationen und unter Verwendung von zwei Testsuiten – Tests, die für Synapse üblich sind Systemtest und ein neues Set Ergänzung. Im aktuellen Entwicklungsstadium besteht Dendrite 56 % der Client-Server-API-Tests und 77 % der Federation-API-Tests, während die tatsächliche Funktionalitätsabdeckung auf 70 % für die Client-Server-API und 95 % für die Federation-API geschätzt wird.

Die Beta-Testphase zeigt, dass Dendrite für die erste Implementierung und den Übergang zur Entwicklung bereit ist, wobei regelmäßig neue Versionen veröffentlicht werden. Zwischen den Releases wird nun das Datenspeicherschema in der Datenbank aktualisiert (anders als bei der Installation von Slices aus dem Repository gehen die Inhalte 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. Derzeit wird empfohlen, Dendrite im monolithischen Modus in Verbindung mit dem PostgreSQL-DBMS zu verwenden, um kleine Homeserver und P2P-Knoten zu erstellen. Die Verwendung von SQLite wird aufgrund ungelöster Probleme bei der Handhabung gleichzeitiger Vorgänge noch nicht empfohlen.

Zu den Funktionen, die noch nicht in Dendrite implementiert wurden, gehören Bestätigungen des Nachrichtenempfangs, Lesemarkierungen, Push-Benachrichtigungen, OpenID, E-Mail-Bindung, serverseitige Suche, Benutzerverzeichnis, Benutzer-Ignorierlisten, Erstellen von Gruppen und Communities, Bewertung der Online-Präsenz von Benutzern, Gasteingaben, Interaktion mit Netzwerken Dritter.

Zur Nutzung stehen Grundfunktionen für Chatrooms (Erstellung, Einladungen, Authentifizierungsregeln), Mittel zur Zusammenführung von Teilnehmern in Räumen, Synchronisierung von Ereignissen nach der Rückkehr aus dem Offline-Modus, Konten, Profile, Wählanzeige, Herunterladen und Hochladen von Dateien (Medien-API) zur Verfügung. Bearbeiten von Nachrichten, ACLs, Tag-Bindung und Arbeiten mit Geräte- und Schlüssellisten für die End-to-End-Verschlüsselung.

Erinnern wir uns daran, dass die Plattform zur Organisation der dezentralen Kommunikation Matrix HTTPS+JSON als Transportmittel mit der Möglichkeit zur Verwendung von WebSockets oder einem darauf basierenden Protokoll verwendet CoAP+Lärm. Das System wird als Gemeinschaft von Servern gebildet, die miteinander interagieren können und in einem gemeinsamen dezentralen Netzwerk vereint sind. Nachrichten werden auf allen Servern repliziert, mit denen die Messaging-Teilnehmer verbunden sind. Nachrichten werden auf die gleiche Weise über Server hinweg weitergegeben wie Commits zwischen Git-Repositorys. Im Falle eines vorübergehenden Serverausfalls gehen Nachrichten nicht verloren, sondern werden nach Wiederaufnahme des Serverbetriebs an die Benutzer übermittelt. Es werden verschiedene Benutzer-ID-Optionen unterstützt, darunter E-Mail, Telefonnummer, Facebook-Konto usw.

Es gibt keinen Single Point of Failure oder Nachrichtenkontrolle im gesamten Netzwerk. Alle in der Diskussion behandelten Server sind einander gleich.
Jeder Benutzer kann seinen eigenen Server betreiben und ihn an ein gemeinsames Netzwerk anschließen. Es ist möglich zu erstellen Gateways für die Interaktion von Matrix mit Systemen, die auf anderen Protokollen basieren, zum Beispiel bereit Dienste zum bidirektionalen Senden von Nachrichten an IRC, Facebook, Telegram, Skype, Hangouts, E-Mail, WhatsApp und Slack. Zusätzlich zu Instant Text Messaging und Chats kann das System zum Übertragen von Dateien, zum Versenden von Benachrichtigungen usw. verwendet werden.
Organisation von Telefonkonferenzen, Durchführung von Sprach- und Videoanrufen. Es unterstützt auch erweiterte Funktionen wie Benachrichtigungen über Eingaben, Auswertung der Online-Präsenz des Benutzers, Lesebestätigung, Push-Benachrichtigungen, serverseitige Suche, Synchronisierung des Verlaufs und des Client-Status.

Source: opennet.ru

Kommentar hinzufügen