Dendrite, een communicatieserver met de implementatie van het Matrix-protocol

Dendrite is een communicatieserver die wordt ontwikkeld door het Matrix-team en wordt gepositioneerd als een tweede generatie implementatie van Matrix-servercomponenten.

In tegenstelling tot de Synapse-referentieserver die in Python is geschreven, wordt de Dendrite-code ontwikkeld in Go. Beide officiële implementaties worden gedistribueerd onder de Apache 2.0-licentie.

Als onderdeel van het Ruma-project wordt een aparte versie van de Matrix-server ontwikkeld in de Rust-taal, die wordt verspreid onder de MIT-licentie.

De nieuwe server is ontworpen om een ​​hoge efficiëntie, betrouwbaarheid en schaalbaarheid te bereiken.

Over Dendrite

Dendrite presteert beter dan Synapse, vereist veel minder geheugen en kan worden opgeschaald door de belasting over meerdere knooppunten te verdelen.

De Dendrite-architectuur ondersteunt horizontale schaling en is gebaseerd op de scheiding van controllers in de vorm van microservices, waarbij elke instantie van een microservice zijn eigen tabellen in de database heeft.

De load balancer is verantwoordelijk voor het verzenden van oproepen naar microservices. Threads (go-routines) worden gebruikt om bewerkingen in de code te parallelliseren, waardoor de bronnen van alle CPU-kernen kunnen worden gebruikt zonder ze in afzonderlijke processen te verdelen.

Dendrite ondersteunt twee werkmodi: monolithisch en meercomponenten (polylith).

  • In monolithische modus, Alle microservices zijn gekoppeld in een uitvoerbaar bestand, draaien in een proces en werken rechtstreeks met elkaar samen.
  • In meercomponentenmodus (cluster) kunnen microservices afzonderlijk worden gelanceerd, zelfs met diversiteit op verschillende knooppunten. Componentinteractie in multicomponent-modus wordt uitgevoerd met behulp van de interne HTTP-API en het Apache Kafka-platform.

De ontwikkeling wordt uitgevoerd op basis van de specificaties van het Matrix-protocol en met behulp van twee sets tests: de algemene sytest-tests met Synapse en de nieuwe Complement-suite.

In de huidige ontwikkelingsfase slaagt Dendrite voor 56% van de client-server API-tests en 77% van de federatie-API-tests, terwijl de daadwerkelijke functionaliteitsdekking naar schatting 70% bedraagt ​​voor de client-server API en 95% voor de federatie-API.

De bètafase geeft aan dat Dendrite klaar is voor de eerste implementatie en de overgang naar ontwikkeling met regelmatige nieuwe releases. Tussen de releases door wordt het opslagschema van de database bijgewerkt (in tegenstelling tot het installeren van fragmenten uit de repository, gaat de database-inhoud na de update niet verloren).

Wijzigingen die de compatibiliteit met eerdere versies verbreken, de databasestructuur wijzigen of configuratiewijzigingen vereisen, worden alleen aangeboden in grote releases.

Momenteel wordt het gebruik van Dendrite in monolithische modus met PostgreSQL DBMS aanbevolen voor het opzetten van kleine thuisservers en P2P-nodes. SQLite wordt nog niet aanbevolen vanwege onopgeloste problemen met het afhandelen van gelijktijdige bewerkingen.

Functies die nog niet in Dendrite zijn geïmplementeerd, zijn onder andere : berichtbevestigingen, leesbevestigingen, pushnotificaties, OpenID, e-mailkoppeling, zoeken aan de serverzijde, gebruikersdirectory, negeerlijsten voor gebruikers, het aanmaken van groepen en communities, het evalueren van de online aanwezigheid van een gebruiker, input van gasten en interactie met netwerken van derden.

Basisfunctionaliteit voor de werking van chatrooms (creatie, uitnodigingen, authenticatieregels), middelen voor federatie van deelnemers in kamers, synchronisatie van evenementen na terugkeer van offline, accounts, profielen, kiesindicatie, downloaden en uploaden van bewerkingsbestanden (Media API) zijn beschikbaar voor gebruik berichten, ACL's, labeling en end-to-end versleutelingsapparaat en sleutellijsten.

Ter herinnering: het Matrix-platform voor het organiseren van gedecentraliseerde communicatie gebruikt HTTPS + JSON als transportprotocol, met de mogelijkheid om WebSockets of een protocol gebaseerd op CoAP + Noise te gebruiken. Het systeem is gestructureerd als een gemeenschap van servers die met elkaar kunnen communiceren en zich kunnen verenigen tot een gemeenschappelijk gedecentraliseerd netwerk.

Berichten worden gerepliceerd naar alle servers waarmee de deelnemers aan het berichtenverkeer verbonden zijn. Berichten verspreiden zich tussen servers op een vergelijkbare manier als commits zich verspreiden tussen Git-repositories.

Bron: https://matrix.org


Voeg dit toe als voorkeursbron in Google.