Release van Dendrite 0.1.0, een communicatieserver met een implementatie van het Matrix-protocol

gepubliceerd Matrix-serverrelease Dendriet 0.1.0, die de overgang van de ontwikkeling naar de bètatestfase markeerde. Dendrite wordt ontwikkeld door het kernteam van ontwikkelaars van het decentrale communicatieplatform Matrix en is gepositioneerd als de implementatie van de tweede generatie Matrix-servercomponenten. In tegenstelling tot de referentieserver Synaps, geschreven in Python, code Dendrite ontwikkeld zich in Go-taal. Beide officiële implementaties vallen onder de Apache 2.0-licentie. Binnen de grenzen van het project Ruma Er wordt afzonderlijk een versie van de Matrix-server in de Rust-taal ontwikkeld gedistribueerd door onder de MIT-licentie.

De nieuwe server is gericht op het bereiken van een hoge efficiëntie, betrouwbaarheid en schaalbaarheid. Dendrite presteert beter dan Synapse, vereist aanzienlijk minder geheugen en kan worden geschaald door middel van taakverdeling over meerdere knooppunten. De Dendrite-architectuur ondersteunt horizontale schaling en is gebaseerd op de scheiding van handlers in de vorm van microservices, waarbij elke microservice-instantie zijn eigen tabellen in de database heeft. De load balancer verzendt oproepen naar microservices. Om bewerkingen in de code te parallelliseren, worden threads (go-routines) gebruikt, waarmee u de bronnen van alle CPU-kernen kunt gebruiken zonder ze in afzonderlijke processen te verdelen.

Release van Dendrite 0.1.0, een communicatieserver met een implementatie van het Matrix-protocol

Dendriet ondersteunt twee modi: monolithisch en polylithisch. In de monolithische modus worden alle microservices verpakt in één enkel uitvoerbaar bestand, uitgevoerd in één enkel proces, en communiceren ze rechtstreeks met elkaar. In de modus met meerdere componenten (cluster) kunnen microservices afzonderlijk worden gelanceerd, inclusief gedistribueerd over verschillende knooppunten. Interactie van componenten in
de multi-componentmodus wordt uitgevoerd met behulp van de interne HTTP API en het interne platform Apache Kafka.

De ontwikkeling wordt uitgevoerd op basis van de Matrix-protocolspecificaties en met behulp van twee testsuites - tests die gebruikelijk zijn voor Synapse systeem en een nieuw setje Aanvulling. In de huidige ontwikkelingsfase slaagt Dendrite voor 56% van de Client-Server API-tests en 77% van de Federation API-tests, terwijl de feitelijke functionaliteitsdekking wordt geschat op 70% voor Client-Server API en 95% voor Federation API.

De bètatestfase geeft aan dat Dendrite klaar is voor de eerste implementatie en overgang naar ontwikkeling, waarbij er periodiek nieuwe releases worden uitgebracht. Tussen de releases door zal het gegevensopslagschema in de database nu worden bijgewerkt (in tegenstelling tot het installeren van segmenten vanuit de repository zal de inhoud van de database na de update niet verloren gaan). Wijzigingen die de achterwaartse compatibiliteit verbreken, de databasestructuur wijzigen of configuratiewijzigingen vereisen, worden alleen aangeboden in grote releases. Dendrite wordt momenteel aanbevolen voor gebruik in monolithische modus in combinatie met het PostgreSQL DBMS om kleine homeservers en P2P-knooppunten te creëren. Het gebruik van SQLite wordt nog niet aanbevolen vanwege onopgeloste problemen met het verwerken van gelijktijdige bewerkingen.

Functies die nog niet in Dendrite zijn geïmplementeerd, zijn onder meer berichtontvangstbevestigingen, leesmarkeringen, pushmeldingen, OpenID, e-mailbinding, zoeken op de server, gebruikerslijst, negeerlijsten van gebruikers, het maken van groepen en communities, het beoordelen van de online aanwezigheid van gebruikers, gastinvoer, interactie met netwerken van derden.

Beschikbaar voor gebruik zijn basisfunctionaliteit voor chatrooms (aanmaken, uitnodigingen, authenticatieregels), middelen voor federatie van deelnemers in kamers, synchronisatie van gebeurtenissen na terugkeer uit offline, accounts, profielen, belindicatie, downloaden en uploaden van bestanden (Media API), berichten bewerken, ACL's, tagbinding en werken met lijsten met apparaten en sleutels voor end-to-end-codering.

Laten we niet vergeten dat het platform voor het organiseren van gedecentraliseerde communicatie Matrix HTTPS+JSON gebruikt als transportmiddel met de mogelijkheid om WebSockets te gebruiken of een protocol gebaseerd op CoAP+Geluid. Het systeem is gevormd als een gemeenschap van servers die met elkaar kunnen communiceren en verenigd zijn in een gemeenschappelijk gedecentraliseerd netwerk. Berichten worden gerepliceerd over alle servers waarmee de berichtdeelnemers zijn verbonden. Berichten worden over servers verspreid op dezelfde manier als commits tussen Git-repository's worden doorgegeven. In het geval van een tijdelijke serverstoring gaan berichten niet verloren, maar worden ze naar gebruikers verzonden nadat de server de werking heeft hervat. Er worden verschillende gebruikers-ID-opties ondersteund, waaronder e-mailadres, telefoonnummer, Facebook-account, enz.

Er is geen enkel storingspunt of berichtcontrole over het hele netwerk. Alle servers die onder de discussie vallen, zijn gelijk aan elkaar.
Elke gebruiker kan zijn eigen server runnen en deze verbinden met een gemeenschappelijk netwerk. Het is mogelijk om te creëren poorten voor interactie van Matrix met systemen op basis van andere protocollen, bijvoorbeeld bereid diensten voor het in twee richtingen verzenden van berichten naar IRC, Facebook, Telegram, Skype, Hangouts, e-mail, WhatsApp en Slack. Naast instant sms-berichten en chats kan het systeem worden gebruikt om bestanden over te dragen, meldingen te verzenden,
het organiseren van teleconferenties, het voeren van spraak- en video-oproepen. Het ondersteunt ook geavanceerde functies zoals notificatie van typen, evaluatie van de online aanwezigheid van gebruikers, leesbevestiging, pushmeldingen, zoeken op de server, synchronisatie van geschiedenis en clientstatus.

Bron: opennet.ru

Voeg een reactie