Dendrite je komunikacijski server koji razvija Matrix tim i pozicioniran je kao implementacija druge generacije Matrix serverskih komponenti.
Za razliku od Synapse referentnog servera napisanog na Pythonu, Dendrite kod je razvijen u programu Go. Obje službene implementacije distribuiraju se pod licencom Apache 2.0.
U sklopu projekta Ruma razvija se zasebna verzija Matrix servera na jeziku Rust, koji se distribuira pod MIT licencom.
Novi server ima za cilj postizanje visoke efikasnosti, pouzdanosti i skalabilnosti.
O Dendriteu
Dendrite je ispred Synapsea u pogledu performansi, zahtijeva mnogo manje memorije za rad i može se skalirati balansiranjem opterećenja na više čvorova.
Dendrite arhitektura podržava horizontalno skaliranje i zasnovana je na odvajanju kontrolera u obliku mikroservisa, gdje svaka instanca mikroservisa ima svoje tabele u bazi podataka.
Uravnoteživač tereta odgovoran je za slanje poziva mikroservisima. Niti (go rutine) koriste se za paraleliziranje operacija u kodu, što omogućava korištenje resursa svih CPU jezgri bez podjele u zasebne procese.
Dendrite podržava rad u dva načina: monolitnom i višekomponentnom (polilitnom).
- U monolitnom načinu, Svi su mikroservisi povezani u izvršnu datoteku, pokreću se u procesu i izravno međusobno komuniciraju.
- U višekomponentnom načinu (klaster), mikroservisi se mogu pokrenuti odvojeno, čak i sa raznovrsnošću na različitim čvorovima. Interakcija komponenata u višekomponentnom načinu rada provodi se pomoću internog HTTP API-ja i Apache Kafka platforme.
Razvoj se izvodi na osnovu specifikacija protokola Matrix i koristeći dva skupa testova: uobičajeni test testova sa Synapseom i novi paket Complement.
U trenutnoj fazi razvoja, Dendrite uspješno prolazi 56% testova klijent-server API-ja i 77% testova federacijskog API-ja, dok se stvarna pokrivenost funkcionalnošću procjenjuje na 70% za klijent-server API i 95% za federacijski API.
Beta faza ukazuje na to da je Dendrite spreman za početno raspoređivanje i prelazak na razvoj s redovnim novim izdanjima. Između izdanja, shema pohrane baze podataka sada će se ažurirati (za razliku od instaliranja fragmenata iz repozitorija, nakon ažuriranja, sadržaj baze podataka neće biti izgubljen).

Promjene koje narušavaju unatrag kompatibilnost, mijenjaju strukturu baze podataka ili zahtijevaju promjene konfiguracije bit će ponuđene samo u glavnim izdanjima.
Trenutno se preporučuje korištenje Dendritea u monolitnom režimu sa PostgreSQL DBMS-om za kreiranje malih kućnih servera i P2P čvorova. SQLite se još ne preporučuje zbog neriješenih problema sa rukovanjem istovremenim operacijama.
Funkcije koje još nisu implementirane u Dendrite uključuju : potvrde poruka, potvrde o čitanju, push obavještenja, OpenID, povezivanje e-pošte, pretraživanje na strani servera, korisnički direktorij, liste ignorisanih korisnika, kreiranje grupa i zajednica, procjenu online prisutnosti korisnika, unose gostiju i interakciju s mrežama trećih strana.
Osnovna funkcionalnost za rad chat soba (kreiranje, pozivnice, pravila provjere autentičnosti), način udruživanja sudionika u sobama, sinhronizacija događaja nakon povratka van mreže, računi, profili, indikacija biranja, preuzimanje i postavljanje Datoteke za uređivanje (Media API) dostupne su za upotrebu poruka, ACL-ova, označavanja i end-to-end enkripcionih uređaja i popisa ključeva.
Podsjetimo se da Matrix platforma za organizaciju decentraliziranih komunikacija koristi HTTPS + JSON kao svoj transportni protokol, s mogućnošću korištenja WebSocketsa ili protokola zasnovanog na CoAP + Noise. Sistem je strukturiran kao zajednica servera koji mogu međusobno komunicirati i kombinovati se u zajedničku decentraliziranu mrežu.
Poruke se repliciraju na svim serverima na koje su povezani učesnici u razmjeni poruka. Poruke se šire između servera na način sličan načinu na koji se commit-ovi šire između Git repozitorija.
Izvor: https://matrix.org