Il nuovo server mira a raggiungere elevata efficienza, affidabilità e scalabilità. Dendrite supera Synapse, richiede molta meno memoria per funzionare e può scalare attraverso il bilanciamento del carico su più nodi. L'architettura Dendrite supporta il ridimensionamento orizzontale e si basa sulla separazione dei gestori sotto forma di microservizi, in cui ciascuna istanza di microservizio ha le proprie tabelle nel database. Il sistema di bilanciamento del carico invia le chiamate ai microservizi. Per parallelizzare le operazioni nel codice vengono utilizzati i thread (go routine), che consentono di utilizzare le risorse di tutti i core della CPU senza dividerle in processi separati.
Dendrite supporta due modalità: monolitica e polilitica. In modalità monolitica, tutti i microservizi sono racchiusi in un unico file eseguibile, eseguiti in un unico processo e interagiscono direttamente tra loro. Nella modalità multicomponente (cluster), i microservizi possono essere avviati separatamente, anche distribuiti su diversi nodi. Interazione dei componenti in
la modalità multicomponente viene eseguita utilizzando l'API e la piattaforma HTTP interne
Lo sviluppo viene effettuato sulla base delle specifiche del protocollo Matrix e utilizzando due suite di test: test comuni a Synapse
La fase di beta testing indica che Dendrite è pronto per l'implementazione iniziale e la transizione allo sviluppo con nuove versioni periodicamente formate. Tra i rilasci, lo schema di archiviazione dei dati nel database verrà ora aggiornato (a differenza dell'installazione delle sezioni dal repository, il contenuto del database non andrà perso dopo l'aggiornamento). Le modifiche che interrompono la compatibilità con le versioni precedenti, modificano la struttura del database o richiedono modifiche alla configurazione verranno offerte solo nelle versioni principali. Attualmente si consiglia di utilizzare Dendrite in modalità monolitica insieme al DBMS PostgreSQL per creare piccoli homeserver e nodi P2P. L'uso di SQLite non è ancora consigliato a causa di problemi irrisolti relativi alla gestione delle operazioni simultanee.
Le funzionalità che non sono state ancora implementate in Dendrite includono conferme di ricezione dei messaggi, contrassegni di lettura, notifiche push, OpenID, associazione e-mail, ricerca lato server, directory utente, elenchi di utenti ignorati, creazione di gruppi e comunità, valutazione della presenza online dell'utente, input degli ospiti, interazione con reti di terze parti.
Sono disponibili funzionalità di base per le chat room (creazione, inviti, regole di autenticazione), mezzi di federazione dei partecipanti alle room, sincronizzazione di eventi dopo il ritorno dalla modalità offline, account, profili, indicazione di composizione, download e caricamento di file (Media API), modifica di messaggi, ACL, associazione di tag e utilizzo di elenchi di dispositivi e chiavi per la crittografia end-to-end.
Ricordiamo che la piattaforma per l'organizzazione delle comunicazioni decentralizzate Matrix utilizza HTTPS+JSON come trasporto con la possibilità di utilizzare WebSocket o un protocollo basato su
Non esiste un singolo punto di errore o controllo dei messaggi attraverso la rete. Tutti i server oggetto della discussione sono uguali tra loro.
Qualsiasi utente può eseguire il proprio server e collegarlo a una rete comune. È possibile creare
organizzare teleconferenze, effettuare chiamate vocali e videochiamate. Supporta inoltre funzionalità avanzate come la notifica della digitazione, la valutazione della presenza online dell'utente, la conferma di lettura, le notifiche push, la ricerca lato server, la sincronizzazione della cronologia e dello stato del client.
Fonte: opennet.ru