Dendrite, komunikačný server s implementáciou protokolu Matrix

Dendrite je komunikačný server vyvíjaný tímom Matrix a je prezentovaný ako druhá generácia implementácie komponentov servera 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 sa zameriava na dosiahnutie vysokej efektivity, spoľahlivosti a škálovateľnosti.

O Dendriteovi

Dendrite je výkonovo pred Synapse, vyžaduje oveľa menej pamäte na prevádzku a dokáže sa škálovať vyvažovaním záťaže medzi viacerými uzlami.

Architektúra Dendrite podporuje horizontálne škálovanie a je založená na oddelení kontrolérov vo forme mikroslužieb, kde každá inštancia mikroslužby má v databáze vlastné tabuľky.

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: monolitickom a viaczložkovom (polylitovom).

  • 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 prechádza 56 % testov klient-server API a 77 % testov federačného API, pričom skutočné pokrytie funkčnosti sa odhaduje na 70 % pre klient-server API a 95 % pre federačné API.

Beta fáza naznačuje, že Dendrite je pripravený na počiatočné nasadenie a prechod do vývoja s pravidelnými novými vydaniami. Medzi vydaniami sa teraz bude aktualizovať schéma úložiska databázy (na rozdiel od inštalácie fragmentov z repozitára sa po aktualizácii 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.

V súčasnosti sa na vytváranie malých domácich serverov a P2P uzlov odporúča používať Dendrite v monolitickom režime s PostgreSQL DBMS . SQLite sa zatiaľ neodporúča kvôli nevyriešeným problémom so spracovaním súbežných operácií.

Medzi funkcie, ktoré ešte nie sú implementované v Dendrite , patria : potvrdenia správ, potvrdenia o prečítaní, push notifikácie, OpenID, prepojenie e-mailov, vyhľadávanie na strane servera, adresár používateľov, zoznamy ignorovaných používateľov, vytváranie skupín a komunít, vyhodnocovanie online prítomnosti používateľa, vstupy hosťov a 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.

Pripomeňme si, že platforma Matrix na organizáciu decentralizovanej komunikácie používa ako transportný protokol HTTPS + JSON s možnosťou využitia WebSockets alebo protokolu založeného na CoAP + Noise. Systém je štruktúrovaný ako komunita serverov, ktoré môžu navzájom interagovať a spájať sa do spoločnej decentralizovanej siete.

Správy sa replikujú na všetky servery, ku ktorým sú pripojení účastníci odosielania správ. Správy sa šíria medzi servermi podobným spôsobom, ako sa commity šíria medzi repozitármi Git.

Zdroj: https://matrix.org


Pridať ako preferovaný zdroj v Google