A Dendrite egy kommunikációs szerver, amelyet a Matrix csapata fejleszt , és a Matrix szerver komponenseinek második generációs implementációjaként pozicionálták.
A Pythonban írt Synapse referencia szerverrel ellentétben a Dendrite kódot a Go fejlesztette ki. Mindkét hivatalos megvalósítást Apache 2.0 licenc alatt terjesztik.
A Ruma projekt részeként fejlesztik a Matrix szerver külön verzióját a Rust nyelven, amelyet az MIT licenc alatt terjesztenek.
Az új szerver célja a nagy hatékonyság, megbízhatóság és skálázhatóság elérése.
A Dendrite-ről
A Dendrite teljesítmény tekintetében megelőzi a Synapse-t, sokkal kevesebb memóriát igényel a működéséhez, és több csomópont közötti terheléselosztással skálázható.
A Dendrite architektúra támogatja a vízszintes skálázást, és a vezérlők mikroszolgáltatások formájában történő szétválasztásán alapul, ahol a mikroszolgáltatás minden példányának saját táblázatai vannak az adatbázisban.
A terheléselosztó felelős a hívások mikroszolgáltatásokba történő küldéséért. Szálakat (go rutinokat) használnak a kód műveleteinek párhuzamosítására, amelyek lehetővé teszik az összes CPU-mag erőforrásainak felhasználását anélkül, hogy azokat külön folyamatokra osztanák.
A dendrit kétféle módon működik: monolitikus és többkomponensű (polilit).
- Monolitikus üzemmódban Az összes mikroszolgáltatás egy futtatható fájlban van összekapcsolva, folyamatban fut, és közvetlenül kölcsönhatásba lépnek egymással.
- Többkomponensű üzemmódban (fürt), a mikroszolgáltatások külön-külön is elindíthatók, még akkor is, ha a különböző csomópontokon sokféleség van. A komponensek interakcióját többkomponensű módban a belső HTTP API és az Apache Kafka platform segítségével hajtják végre.
A fejlesztés a Matrix protokoll specifikációi alapján és két tesztkészlet felhasználásával történik: a Synaps által használt közös sytest tesztek és az új Complement csomag.
A fejlesztés jelenlegi szakaszában a Dendrite a kliens-szerver API tesztek 56%-án és a föderációs API tesztek 77%-án sikeresen teljesít, míg a tényleges funkcionális lefedettség a kliens-szerver API esetében 70%-ra, a föderációs API esetében pedig 95%-ra becsülhető.
A béta fázis azt jelzi, hogy a Dendrite készen áll a kezdeti telepítésre és a fejlesztésbe való átmenetre rendszeres új kiadásokkal. A kiadások között az adatbázis-tárolási séma frissül (ellentétben a tárolóból telepített töredékekkel, a frissítés után az adatbázis tartalma nem veszik el).

Azok a változások, amelyek megszakítják a visszamenőleges kompatibilitást, megváltoztatják az adatbázis szerkezetét, vagy konfigurációs változtatásokat igényelnek, csak nagyobb kiadásokban lesznek elérhetők.
Jelenleg a Dendrite monolitikus módban történő használata PostgreSQL adatbázis-kezelő rendszerrel ajánlott kis otthoni szerverek és P2P csomópontok létrehozásához. Az SQLite még nem ajánlott a párhuzamos műveletek kezelésével kapcsolatos megoldatlan problémák miatt.
A Dendrite-ban még nem implementált funkciók a következők : üzenet-visszaigazolások, olvasási visszaigazolások, push értesítések, OpenID, e-mail-összekapcsolás, szerveroldali keresés, felhasználói címtár, felhasználói tiltólisták, csoportok és közösségek létrehozása, a felhasználó online jelenlétének értékelése, vendégbemenet és interakció harmadik fél hálózataival.
A csevegőszobák működésének alapvető funkciói (létrehozás, meghívók, hitelesítési szabályok), a szobákban résztvevők összevonásának eszközei, az események szinkronizálása az offline állapotból való visszatérés után, fiókok, profilok, tárcsázási jelzés, letöltés és feltöltés A szerkesztő fájlok (Media API) elérhetők a használati üzenetekhez, az ACL-ekhez, a címkézéshez és a végpontok közötti titkosító eszközökhöz és a kulcslistákhoz.
Emlékezzünk vissza, hogy a decentralizált kommunikáció szervezésére szolgáló Matrix platform HTTPS + JSON átviteli protokollt használ, azzal a képességgel, hogy WebSockets vagy CoAP + Noise alapú protokollt használjon. A rendszer szerverek közösségeként van felépítve, amelyek kölcsönhatásba léphetnek egymással és egy közös decentralizált hálózatba egyesülhetnek.
Az üzenetek minden olyan szerveren replikálódnak, amelyhez az üzenetküldési résztvevők csatlakoznak. Az üzenetek a szerverek között hasonló módon terjednek, mint ahogy a commitok terjednek a Git-tárházak között.
Forrás: https://matrix.org