Dendrite este un server de comunicații dezvoltat de echipa Matrix și este poziționat ca o implementare de a doua generație a componentelor serverului Matrix.
Spre deosebire de serverul de referință Synapse scris în Python, codul Dendrite este dezvoltat în Go. Ambele implementări oficiale sunt distribuite sub licența Apache 2.0.
Ca parte a proiectului Ruma, o versiune a serverului Matrix este dezvoltată separat în limbajul Rust, care este distribuit sub licența MIT.
Noul server își propune să atingă un nivel ridicat de eficiență, fiabilitate și scalabilitate.
Despre Dendrit
Dendrite este înaintea lui Synapse în ceea ce privește performanța, necesită mult mai puțină memorie pentru a funcționa și poate scala prin echilibrarea încărcării pe mai multe noduri.
Arhitectura Dendrite suportă scalarea orizontală și se bazează pe separarea controlerelor sub formă de microservicii, unde fiecare instanță a unui microserviciu are propriile tabele în baza de date.
Echilibratorul de încărcare este responsabil pentru trimiterea apelurilor către microservicii. Pentru a paraleliza operațiunile din cod, se folosesc fire de execuție (rutine go), care permit utilizarea resurselor tuturor nucleelor CPU fără a le împărți în procese separate.
Dendrite acceptă lucrul în două moduri: monolitic și multicomponent (polilit).
- În modul monolitic, toate microserviciile sunt legate într-un fișier executabil, rulează într-un proces și interacționează direct între ele.
- În modul cu mai multe componente (cluster), microservicii pot fi lansate separat, chiar și cu diversitate pe diferite noduri. Interacțiunea componentelor în modul multi-component se realizează folosind API-ul HTTP intern și platforma Apache Kafka.
Dezvoltarea se realizează pe baza specificațiilor protocolului Matrix și folosind două suite de testare: testele comune sytest cu Synapse și noua suită Complement.
În stadiul actual de dezvoltare, Dendrite trece cu succes 56% din testele API client-server și 77% din testele API de federație, în timp ce acoperirea funcțională reală este estimată la 70% pentru API-ul client-server și 95% pentru API-ul de federație.
Stadiul beta indică faptul că Dendrite este pregătit pentru implementarea inițială și tranziția către dezvoltare cu versiuni noi regulate. Între versiuni, schema de stocare a bazei de date va fi acum actualizată (spre deosebire de instalarea fragmentelor din repozitoriu, după actualizare, conținutul bazei de date nu se va pierde).

Modificările care încalcă compatibilitatea anterioară, modifică structura bazei de date sau necesită modificări de configurare vor fi oferite numai în versiunile majore.
În prezent, utilizarea Dendrite în mod monolitic cu SGBD PostgreSQL este recomandată pentru crearea de servere mici de acasă și noduri P2P. SQLite nu este încă recomandat din cauza unor probleme nerezolvate legate de gestionarea operațiilor concurente.
Printre caracteristicile care nu sunt încă implementate în Dendrite se numără : confirmări de primire a mesajelor, confirmări de citire, notificări push, OpenID, legături de e-mail, căutare pe server, director de utilizatori, liste de ignorare a utilizatorilor, creare de grupuri și comunități, evaluarea prezenței online a unui utilizator, contribuții din partea oaspeților și interacțiunea cu rețele terțe.
Funcționalități de bază pentru funcționarea camerelor de chat (creare, invitații, reguli de autentificare), mijloace de federare a participanților în săli, sincronizare evenimente după revenirea din offline, conturi, profiluri, indicație de apelare, descărcare și încărcare fișiere (Media API), editare mesajele, ACL-urile, etichetarea și listele de chei și dispozitivele de criptare end-to-end sunt disponibile pentru utilizare.
Reamintim că platforma Matrix pentru organizarea comunicațiilor descentralizate folosește HTTPS + JSON ca protocol de transport, cu posibilitatea de a utiliza WebSockets sau un protocol bazat pe CoAP + Noise. Sistemul este structurat ca o comunitate de servere care pot interacționa între ele și se pot combina într-o rețea descentralizată comună.
Mesajele sunt replicate pe toate serverele la care sunt conectați participanții la mesagerie. Mesajele se propagă între servere într-un mod similar cu modul în care commit-urile se propagă între depozitele Git.
Sursă: https://matrix.org