Dendrite er en kommunikationsserver, der udvikles af Matrix-teamet , og som er en andengenerationsimplementering af Matrix-serverkomponenter.
I modsætning til Synapse-referenceserveren skrevet i Python er Dendrite-koden udviklet i Go. Begge officielle implementeringer distribueres under Apache 2.0-licensen.
Som en del af Ruma-projektet udvikles en separat version af Matrix-serveren på Rust-sproget, som distribueres under MIT-licensen.
Den nye server sigter mod at opnå høj effektivitet, pålidelighed og skalerbarhed.
Om Dendrite
Dendrite er foran Synapse med hensyn til ydeevne, kræver meget mindre hukommelse for at fungere og kan skaleres ved load balancing på tværs af flere noder.
Dendritarkitekturen understøtter horisontal skalering og er baseret på adskillelse af controllere i form af mikrotjenester, hvor hver instans af en mikrotjeneste har sine egne tabeller i databasen.
Load balancer er ansvarlig for at sende opkald til mikrotjenester. Tråde (go-rutiner) bruges til at parallelisere operationer i koden, som gør det muligt at bruge ressourcerne i alle CPU-kerner uden at opdele dem i separate processer.
Dendrit understøtter arbejde i to tilstande: monolitisk og multikomponent (polylit).
- I monolitisk tilstand, Alle mikrotjenester er forbundet i en eksekverbar fil, køres i en proces og interagerer direkte med hinanden.
- I multikomponenttilstand (klynge), kan mikrotjenester lanceres separat, selv med forskellighed på forskellige noder. Komponentinteraktion i multikomponenttilstand udføres ved hjælp af den interne HTTP API og Apache Kafka-platformen.
Udviklingen udføres baseret på specifikationerne i Matrix-protokollen og ved hjælp af to sæt tests: de fælles sytest-tests med Synapse og den nye komplementpakke.
På det nuværende udviklingsstadium består Dendrite 56% af klient-server API-testene og 77% af federation API-testene, mens den faktiske funktionalitetsdækning er estimeret til 70% for klient-server API'en og 95% for federation API'en.
Betafasen indikerer, at Dendrite er klar til den første implementering og overgang til udvikling med regelmæssige nye udgivelser. Mellem udgivelser vil databaselagringssystemet nu blive opdateret (i modsætning til installation af fragmenter fra repository vil databaseindholdet ikke gå tabt efter opdateringen).

Ændringer, der bryder bagudkompatibilitet, ændrer databasestrukturen eller kræver konfigurationsændringer, tilbydes kun i større udgivelser.
I øjeblikket anbefales det at bruge Dendrite i monolitisk tilstand med PostgreSQL DBMS til oprettelse af små hjemmeservere og P2P-noder. SQLite anbefales endnu ikke på grund af uløste problemer med håndtering af samtidige operationer.
Funktioner, der endnu ikke er implementeret i Dendrite, inkluderer : beskedbekræftelser, læsekvitteringer, push-notifikationer, OpenID, e-mail-linkning, server-side søgning, brugerkatalog, bruger-ignoreringslister, oprettelse af grupper og fællesskaber, evaluering af en brugers online tilstedeværelse, gæsteinput og interaktion med tredjepartsnetværk.
Grundlæggende funktionalitet til drift af chatrum (oprettelse, invitationer, godkendelsesregler), middel til sammenslutning af deltagere i rum, synkronisering af begivenheder efter hjemkomst fra offline, konti, profiler, opkaldsindikation, download og upload af redigeringsfiler (Media API) er tilgængelige til brug af meddelelser, ACL'er, mærkning og end-to-end-krypteringsenhed og nøglelister.
Husk at Matrix-platformen til organisering af decentraliseret kommunikation bruger HTTPS + JSON som transportprotokol med mulighed for at bruge WebSockets eller en protokol baseret på CoAP + Noise. Systemet er struktureret som et fællesskab af servere, der kan interagere med hinanden og kombineres til et fælles decentraliseret netværk.
Beskeder replikeres på tværs af alle servere, som meddelelsesdeltagerne er forbundet til. Beskeder spredes mellem servere på en måde, der ligner, hvordan commits spredes mellem Git-arkiver.
Kilde: https://matrix.org