Dendrite er en kommunikasjonsserver som utvikles av Matrix-teamet , og er posisjonert som en andre generasjons implementering av Matrix-serverkomponenter.
I motsetning til Synapse referanseserver skrevet i Python, er Dendrite-koden utviklet i Go. Begge offisielle implementeringene distribueres under Apache 2.0-lisensen.
Som en del av Ruma-prosjektet utvikles en egen versjon av Matrix-serveren på Rust-språket, som distribueres under MIT-lisensen.
Den nye serveren har som mål å oppnå høy effektivitet, pålitelighet og skalerbarhet.
Om Dendrite
Dendrite ligger foran Synapse når det gjelder ytelse, krever mye mindre minne for å operere, og kan skaleres ved lastbalansering på tvers av flere noder.
Dendritarkitekturen støtter horisontal skalering og er basert på separasjon av kontrollere i form av mikrotjenester, der hver forekomst av en mikrotjeneste har sine egne tabeller i databasen.
Lastbalansen er ansvarlig for å sende samtaler til mikrotjenester. Tråder (go-rutiner) brukes til å parallellisere operasjoner i koden, slik at ressursene til alle CPU-kjerner kan brukes uten å dele dem inn i separate prosesser.
Dendrit støtter arbeid i to moduser: monolittisk og flerkomponent (polylitt).
- I monolitisk modus, Alle mikrotjenester er koblet til en kjørbar fil, kjøres i en prosess og samhandler direkte med hverandre.
- I flerkomponentmodus (klynge), kan mikrotjenester lanseres separat, selv med mangfold på forskjellige noder. Komponentinteraksjon i multikomponentmodus utføres ved hjelp av det interne HTTP API og Apache Kafka-plattformen.
Utviklingen utføres basert på spesifikasjonene til Matrix-protokollen og ved bruk av to sett med tester: de vanlige sytesttestene med Synapse og den nye komplementpakken.
På nåværende utviklingsstadium består Dendrite 56 % av klient-server API-testene og 77 % av føderasjons-API-testene, mens den faktiske funksjonalitetsdekningen er estimert til 70 % for klient-server API-et og 95 % for føderasjons-API-et.
Betafasen indikerer at Dendrite er klar for førstegangs utrulling og overgang til utvikling med regelmessige nye utgivelser. Mellom utgivelser vil databaselagringssystemet nå bli oppdatert (i motsetning til å installere fragmenter fra depotet, vil ikke databaseinnholdet gå tapt etter oppdateringen).

Endringer som bryter bakoverkompatibilitet, endrer databasestrukturen eller krever konfigurasjonsendringer, vil bare bli tilbudt i større utgivelser.
For øyeblikket anbefales det å bruke Dendrite i monolittisk modus med PostgreSQL DBMS for å lage små hjemmeservere og P2P-noder. SQLite anbefales ikke ennå på grunn av uløste problemer med håndtering av samtidige operasjoner.
Funksjoner som ennå ikke er implementert i Dendrite inkluderer : meldingsbekreftelser, lesekvitteringer, push-varsler, OpenID, e-postkobling, søk på serversiden, brukerkatalog, brukerignoreringslister, opprettelse av grupper og fellesskap, evaluering av en brukers tilstedeværelse på nett, gjesteinnspill og samhandling med tredjepartsnettverk.
Grunnleggende funksjonalitet for drift av chatterom (oppretting, invitasjoner, autentiseringsregler), middel til føderasjon av deltakere i rom, synkronisering av hendelser etter retur fra offline, kontoer, profiler, ringeindikasjon, nedlasting og opplasting av redigeringsfiler (Media API) er tilgjengelige for bruk av meldinger, ACL-er, merking og end-to-end-krypteringsenhet og nøkkelister.
Husk at Matrix-plattformen for organisering av desentralisert kommunikasjon bruker HTTPS + JSON som transportprotokoll, med mulighet for å bruke WebSockets eller en protokoll basert på CoAP + Noise. Systemet er strukturert som et fellesskap av servere som kan samhandle med hverandre og kombineres til et felles desentralisert nettverk.
Meldinger replikeres på tvers av alle servere som meldingsdeltakerne er koblet til. Meldinger forplanter seg mellom servere på en måte som ligner på hvordan commits forplanter seg mellom Git-repositorier.
Kilde: https://matrix.org