A Dendrite egy kommunikációs szerver az a lét a Matrix csapat fejlesztette ki és a Matrix szerver komponensek második generációjának megvalósításaként van elhelyezve.
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 méretezhetőség elérése.
A Dendrite-ről
dendrit teljesítmény tekintetében megelőzi a Synapse-t, működéséhez sokkal kevesebb memória szükséges, és több csomópont közötti terheléselosztással méretezhető.
Dendrit architektúra támogatja a vízszintes méretezé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ái 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.
dendrit kétféle módban támogatja a munkát: 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 sikeresen teljesíti a tesztek 56% -át kliens-szerver API-k és az összevonási API-tesztek 77% -a, míg a tényleges funkcionalitás lefedettségét az ügyfél-kiszolgáló API-ra 70% -ra, az összevonási API-ra pedig 95% -ra becsülik.
A béta szakasz azt jelzi, hogy a Dendrite készen áll a kezdeti telepítésre és a fejlesztésre való áttérés rendszeres új kiadásokkal. A kiadások között az adatbázis-tárolási séma mostantól frissül (ellentétben a lerakatok darabjainak telepítésével, a frissítés után az adatbázis tartalma nem fog elveszni).
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.
Egyelőre ajánlott a Dendrite monolit módban történő használata a PostgreSQL DBMS-mel együtt kis otthoni szerverek és P2P csomópontok létrehozására. Az SQLite használata még nem ajánlott az egyidejű műveletek kezelésével kapcsolatos megoldatlan problémák miatt.
A funkciók még nem valósultak meg a Dendrite-ben Ezek közé: üzenetek nyugtázása, könyvjelzők, push értesítések, OpenID, e-mail link, szerveroldali keresés, felhasználói könyvtár, felhasználói figyelmen kívül hagyási listák, csoportok és közösségek létrehozása, a felhasználó online jelenlétének értékelése , vendég bemenetek, 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 erre a decentralizált kommunikáció szervezésének platformja a Matrix HTTPS + JSON-t használ a WebSockets vagy CoAP + Noise alapú protokoll használatát lehetővé tevő szállításként. A rendszer olyan szerverek közösségeként jön létre, amelyek kölcsönhatásba léphetnek egymással, és egy közös decentralizált hálózatban egyesülnek.
Az üzeneteket az összes kiszolgáló replikálja amelyhez az üzenetküldő résztvevők kapcsolódnak. Az üzenetek terjesztése a szerverek között hasonló módon történik, mint ahogyan a Git adattárak között terjednek az elkövetések.
forrás: https://matrix.org