Dendrite je komunikačný server to je bytie vyvinutý tímom Matrix a je umiestnený ako implementácia druhej generácie serverových komponentov Matrix.
Na rozdiel od referenčného servera Synapse napísaného v Pythone, je Dendrite kód vyvinutý v Go. Obe oficiálne implementácie sú distribuované pod licenciou Apache 2.0.
V rámci projektu Ruma sa vyvíja samostatná verzia servera Matrix v jazyku Rust, ktorý je distribuovaný pod licenciou MIT.
Nový server si kladie za cieľ dosiahnuť vysokú účinnosť, spoľahlivosť a škálovateľnosť.
O Dendriteovi
Dendrite je pred Synapse z hľadiska výkonu, na svoju činnosť vyžaduje oveľa menej pamäte a je možné ju škálovať pomocou vyrovnávania zaťaženia medzi viacerými uzlami.
Dendritová architektúra podporuje horizontálne škálovanie a je založené na oddelení radičov vo forme mikroslužieb, kde každá inštancia mikroslužby má svoje vlastné tabuľky v databáze.
Vyrovnávač zaťaženia je zodpovedný za odosielanie hovorov do mikroslužieb. Vlákna (rutiny go) sa používajú na paralelizáciu operácií v kóde, čo umožňuje použitie prostriedkov všetkých jadier CPU bez ich rozdelenia na samostatné procesy.
Dendrite podporuje prácu v dvoch režimoch: monolitický a viaczložkový (polylit).
- V monolitickom režime Všetky mikroslužby sú prepojené vo spustiteľnom súbore, prebiehajú v procese a navzájom priamo komunikujú.
- V multikomponentnom režime (klaster), mikroslužby je možné spustiť samostatne, a to aj s rozmanitosťou v rôznych uzloch. Interakcia komponentov vo viaczložkovom režime sa vykonáva pomocou interného HTTP API a platformy Apache Kafka.
Vývoj sa realizuje na základe špecifikácií protokolu Matrix a pomocou dvoch sád testov: bežných testov so sytestom so Synapse a novej sady doplnkov.
V súčasnej fáze vývoja Dendrite úspešne absolvuje 56% testov rozhraní API typu klient-server a 77% testov federačného rozhrania API, zatiaľ čo skutočné funkčné pokrytie sa odhaduje na 70% pre rozhranie API typu klient-server a 95% pre rozhranie API federácie.
Fáza beta naznačuje, že Dendrite je pripravený na počiatočné nasadenie a prechod na vývoj s pravidelnými novými vydaniami. Medzi vydaniami sa teraz aktualizuje schéma úložiska databázy (na rozdiel od inštalácie blokov z úložiska, po aktualizácii sa obsah databázy nestratí).
Zmeny, ktoré narúšajú spätnú kompatibilitu, menia štruktúru databázy alebo vyžadujú zmeny v konfigurácii, budú ponúkané iba v hlavných vydaniach.
Pre túto chvíľu, odporúča sa používať Dendrite v monolitickom režime spolu s PostgreSQL DBMS vytvárať malé domáce servery a P2P uzly. Používanie SQLite sa zatiaľ neodporúča z dôvodu nevyriešených problémov so spracovaním súbežných operácií.
Funkcie ešte nie sú implementované v Dendrite patrí medzi ne: potvrdenia správ, záložky, upozornenia push, OpenID, e-mailový odkaz, vyhľadávanie na strane servera, adresár používateľov, zoznamy ignorovaných používateľov, vytváranie skupín a komunít, hodnotenie online prítomnosti používateľa , vstupy hostí, interakcia so sieťami tretích strán.
Základné funkcie fungovania chatovacích miestností (tvorba, pozvánky, pravidlá autentifikácie), prostriedky federácie účastníkov v miestnostiach, synchronizácia udalostí po návrate z režimu offline, účty, profily, indikácia vytáčania, sťahovanie a nahrávanie K dispozícii sú súbory na úpravu (Media API) na použitie správ, zoznamov ACL, označovania a end-to-end šifrovacieho zariadenia a zoznamov kľúčov.
Pamätajte na to platforma na organizáciu decentralizovanej komunikácie Matrix používa HTTPS + JSON ako transport so schopnosťou používať WebSockets alebo protokol založený na CoAP + Noise. Systém je tvorený ako komunita serverov, ktoré môžu navzájom interagovať a sú kombinované v spoločnej decentralizovanej sieti.
Správy sa replikujú na všetkých serveroch ku ktorým sú účastníci správy pripojení. Správy sa medzi servermi šíria podobným spôsobom, ako sa šíria potvrdenia medzi úložiskami Git.
Fuente: https://matrix.org