Dendrite on Matrixi meeskonna arendatav sideserver , mis on positsioneeritud Matrixi serverikomponentide teise põlvkonna teostusena.
Erinevalt Pythonis kirjutatud Synapse'i viiteserverist on Dendrite'i kood välja töötatud Go-s. Mõlemat ametlikku rakendust levitatakse Apache 2.0 litsentsi alusel.
Ruma projekti raames töötatakse Matrixi serveri eraldi versiooni Rust keeles, mida levitatakse MIT-i litsentsi all.
Uue serveri eesmärk on saavutada kõrge efektiivsus, töökindlus ja skaleeritavus.
Dendrite kohta
Dendrite on jõudluse poolest Synapse'ist ees, vajab töötamiseks palju vähem mälu ja saab skaleerida koormuse tasakaalustamise abil mitme sõlme vahel.
Dendrite'i arhitektuur toetab horisontaalset skaleerimist ja põhineb kontrollerite eraldamisel mikroteenuste kujul, kus igal mikroteenuse eksemplaril on andmebaasis oma tabelid.
Mikroteenustesse helistamise eest vastutab koormuse tasakaalustaja. Koodis toimuvate toimingute paralleelseks muutmiseks kasutatakse lõime (go rutiinid), mis võimaldavad kasutada kõigi protsessori südamike ressursse, jagamata neid eraldi protsessideks.
Dendriit toetab töötamist kahes režiimis: monoliitne ja mitmekomponendiline (polüliit).
- Monoliitses režiimis Kõik mikroteenused on lingitud käivitatavas failis, töötavad protsessis ja suhtlevad omavahel otse.
- Mitmekomponendilises režiimis (klaster), mikroteenuseid saab käivitada eraldi, isegi kui need on erinevates sõlmedes mitmekesised. Komponentide interaktsioon multikomponendirežiimis toimub sisemise HTTP API ja Apache Kafka platvormi abil.
Arendus viiakse läbi Matrixi protokolli spetsifikatsioonide põhjal ja kasutades kahte testikomplekti: ühised proovitestid koos Synapse'iga ja uus Complement-komplekt.
Praeguses arendusetapis läbib Dendrite edukalt 56% klient-server API testidest ja 77% föderatsiooni API testidest, samas kui tegelik funktsionaalsuse ulatus on hinnanguliselt 70% klient-serveri API ja 95% föderatsiooni API puhul.
Beetaversioon näitab, et Dendrite on valmis esmaseks juurutamiseks ja üleminekuks arendusse regulaarsete uute versioonidega. Versioonide vahel uuendatakse nüüd andmebaasi salvestusskeemi (erinevalt fragmentide installimisest repositooriumist, ei lähe andmebaasi sisu pärast uuendamist kaduma).

Muudatusi, mis rikuvad tagasiühilduvust, muudavad andmebaasi struktuuri või nõuavad konfiguratsioonimuudatusi, pakutakse ainult suuremates väljaannetes.
Praegu on Dendrite'i kasutamine monoliitses režiimis koos PostgreSQL-i andmebaasihaldussüsteemiga soovitatav väikeste koduserverite ja P2P-sõlmede loomiseks. SQLite'i ei soovitata veel lahendamata probleemide tõttu samaaegsete toimingute käsitlemisel.
Dendrite'is veel rakendamata funktsioonide hulka kuuluvad : sõnumite kinnitused, lugemiskviitungid, tõuketeatised, OpenID, e-posti linkimine, serveripoolne otsing, kasutajate kataloog, kasutajate ignoreerimisnimekirjad, rühmade ja kogukondade loomine, kasutaja veebipõhise kohaloleku hindamine, külaliste sisend ja suhtlus kolmandate osapoolte võrgustikega.
Jututubade töö põhifunktsioonid (loomine, kutsed, autentimisreeglid), ruumides osalejate liitmise vahendid, sündmuste sünkroonimine pärast võrguühenduseta naasmist, kontod, profiilid, valimisteave, failide redigeerimine ja allalaadimine (Media API) on saadaval kasutussõnumite, ACL-ide, sildistamise ja end-to-end krüptimisseadmete ning võtmete loendite jaoks.
Tuletame meelde, et detsentraliseeritud side korraldamiseks mõeldud Matrixi platvorm kasutab oma transpordiprotokollina HTTPS + JSON-i, millel on võimalus kasutada WebSocketsi või CoAP + Noise'il põhinevat protokolli. Süsteem on üles ehitatud serverite kogukonnana, mis saavad omavahel suhelda ja ühineda ühiseks detsentraliseeritud võrguks.
Sõnumeid replikeeritakse kõigis serverites , millega sõnumside osalejad on ühendatud. Sõnumid levivad serverite vahel sarnaselt sellele, kuidas muudatused levivad Giti repositooriumide vahel.
Allikas: https://matrix.org