Dendrite je komunikacijski poslužitelj koji razvija Matrix tim i pozicioniran je kao implementacija Matrix serverskih komponenti druge generacije.
Za razliku od referentnog poslužitelja Synapse napisanog na Pythonu, Dendrite kôd razvijen je u programu Go. Obje službene implementacije distribuiraju se pod licencom Apache 2.0.
U sklopu projekta Ruma razvija se zasebna verzija Matrix poslužitelja na jeziku Rust, koja se distribuira pod MIT licencom.
Novi server ima za cilj postići visoku učinkovitost, pouzdanost i skalabilnost.
O Dendriteu
Dendrite je ispred Synapsea u pogledu performansi, zahtijeva puno manje memorije za rad i može se skalirati uravnoteženjem opterećenja na više čvorova.
Dendrite arhitektura podržava horizontalno skaliranje i temelji se na odvajanju kontrolera u obliku mikroservisa, gdje svaka instanca mikroservisa ima svoje tablice u bazi podataka.
Uravnoteživač tereta odgovoran je za slanje poziva mikroservisima. Niti (go rutine) koriste se za paraleliziranje operacija u kodu, što omogućuje korištenje resursa svih CPU jezgri, bez razdvajanja u zasebne procese.
Dendrite podržava rad u dva načina: monolitnom i višekomponentnom (polilitnom).
- U monolitnom načinu, Sve su mikrousluge povezane u izvršnu datoteku, pokreću se u procesu i izravno međusobno komuniciraju.
- U višekomponentnom načinu (klaster), mikroservisi se mogu pokretati odvojeno, čak i s raznolikošću na različitim čvorovima. Interakcija komponenata u višekomponentnom načinu provodi se pomoću internog HTTP API-ja i platforme Apache Kafka.
Razvoj se provodi na temelju specifikacija Matrix protokola i pomoću dva skupa testova: uobičajenih sytest testova sa Synapseom i novog komplementa.
U trenutnoj fazi razvoja, Dendrite uspješno prolazi 56% testova klijent-poslužitelj API-ja i 77% testova federacijskog API-ja, dok se stvarna pokrivenost funkcionalnosti procjenjuje na 70% za klijent-poslužitelj API i 95% za federacijski API.
Beta faza označava da je Dendrite spreman za početno raspoređivanje i prijelaz 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 za izradu malih kućnih poslužitelja i P2P čvorova preporučuje korištenje Dendritea u monolitnom načinu rada s PostgreSQL DBMS-om . SQLite se još ne preporučuje zbog neriješenih problema s rukovanjem istodobnim operacijama.
Značajke koje još nisu implementirane u Dendriteu uključuju : potvrde poruka, potvrde o čitanju, push obavijesti, OpenID, povezivanje e-pošte, pretraživanje na strani poslužitelja, korisnički direktorij, popise ignoriranih korisnika, stvaranje grupa i zajednica, procjenu online prisutnosti korisnika, unose gostiju i interakciju s mrežama trećih strana.
Osnovna funkcionalnost rada chat soba (stvaranje, pozivnice, pravila provjere autentičnosti), način udruživanja sudionika u sobama, sinkronizacija događaja nakon povratka izvan mreže, računi, profili, indikacija biranja, preuzimanje i učitavanje Datoteke za uređivanje (Media API) dostupne su za upotrebu poruka, ACL-ova, označavanja i end-to-end encryption uređaja i popisa ključeva.
Podsjetimo se da Matrix platforma za organiziranje decentralizirane komunikacije koristi HTTPS + JSON kao svoj transportni protokol, s mogućnošću korištenja WebSocketsa ili protokola temeljenog na CoAP + Noise. Sustav je strukturiran kao zajednica poslužitelja koji mogu međusobno komunicirati i kombinirati se u zajedničku decentraliziranu mrežu.
Poruke se repliciraju na svim poslužiteljima na koje su spojeni sudionici u sustavu razmjene poruka. Poruke se šire između poslužitelja na način sličan načinu na koji se commitovi šire između Git repozitorija.
Izvor: https://matrix.org