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.
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
De ontwikkeling wordt uitgevoerd op basis van de Matrix-protocolspecificaties en met behulp van twee testsuites - tests die gebruikelijk zijn voor Synapse
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
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
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