Den nya servern syftar till att uppnå hög effektivitet, tillförlitlighet och skalbarhet. Dendrite överträffar Synapse, kräver betydligt mindre minne för att fungera och kan skalas genom lastbalansering över flera noder. Dendrite-arkitekturen stöder horisontell skalning och bygger på separation av hanterare i form av mikrotjänster, där varje mikrotjänstinstans har sina egna tabeller i databasen. Lastbalanseraren skickar samtal till mikrotjänster. För att parallellisera operationer i koden används trådar (go-rutiner) som gör att du kan använda resurserna för alla CPU-kärnor utan att dela upp dem i separata processer.
Dendrit stöder två lägen: monolitisk och polylit. I monolitiskt läge paketeras alla mikrotjänster i en enda körbar fil, exekveras i en enda process och interagerar direkt med varandra. I multikomponentläge (kluster) kan mikrotjänster lanseras separat, inklusive fördelade över olika noder. Interaktion mellan komponenter i
multikomponentläge utförs med hjälp av det interna HTTP-API:et och plattformen
Utvecklingen utförs baserat på Matrix-protokollets specifikationer och med två testsviter - tester som är gemensamma för Synapse
Betatestningsstadiet indikerar att Dendrite är redo för initial implementering och övergång till utveckling med nya releaser som regelbundet bildas. Mellan utgåvorna kommer datalagringsschemat i databasen nu att uppdateras (till skillnad från att installera skivor från förvaret, kommer innehållet i databasen inte att gå förlorat efter uppdateringen). Ändringar som bryter bakåtkompatibiliteten, ändrar databasstrukturen eller kräver konfigurationsändringar kommer endast att erbjudas i större utgåvor. Dendrite rekommenderas för närvarande att användas i monolitiskt läge i kombination med PostgreSQL DBMS för att skapa små hemmaservrar och P2P-noder. Användning av SQLite rekommenderas ännu inte på grund av olösta problem med hantering av samtidiga operationer.
Funktioner som ännu inte har implementerats i Dendrite inkluderar bekräftelser av meddelandekvitto, läsmärken, push-meddelanden, OpenID, e-postbindning, sökning på serversidan, användarkatalog, ignoreringslistor för användare, skapande av grupper och gemenskaper, bedömning av användares onlinenärvaro, gästinput, interaktion med tredjepartsnätverk.
Tillgängliga för användning är grundläggande funktionalitet för chattrum (skapande, inbjudningar, autentiseringsregler), sätt för federation av deltagare i rum, synkronisering av händelser efter återkomst från offline, konton, profiler, uppringningsindikering, nedladdning och uppladdning av filer (Media API), redigera meddelanden, ACL, taggbindning och arbeta med listor över enheter och nycklar för end-to-end-kryptering.
Låt oss komma ihåg att plattformen för att organisera decentraliserad kommunikation Matrix använder HTTPS+JSON som en transport med möjlighet att använda WebSockets eller ett protokoll baserat på
Det finns ingen enskild felpunkt eller meddelandekontroll över nätverket. Alla servrar som diskuteras är lika med varandra.
Alla användare kan köra sin egen server och ansluta den till ett gemensamt nätverk. Det går att skapa
organisera telefonkonferenser, ringa röst- och videosamtal. Den stöder även sådana avancerade funktioner som avisering om skrivning, utvärdering av användares onlinenärvaro, läsbekräftelse, push-meddelanden, sökning på serversidan, synkronisering av historik och klientstatus.
Källa: opennet.ru