Dendrite, komunikacijski strežnik z izvajanjem protokola Matrix

Dendrite je komunikacijski strežnik, ki ga razvija ekipa Matrix in je pozicioniran kot druga generacija implementacije komponent strežnika Matrix.

Za razliko od referenčnega strežnika Synapse, napisanega v Pythonu, je koda Dendrite razvita v programu Go. Obe uradni izvedbi sta na voljo pod licenco Apache 2.0.

V okviru projekta Ruma se razvija ločena različica strežnika Matrix v jeziku Rust, ki se distribuira pod licenco MIT.

Novi strežnik si prizadeva doseči visoko učinkovitost, zanesljivost in skalabilnost.

O Dendriteu

Dendrite je po zmogljivosti pred Synapseom, za delovanje potrebuje veliko manj pomnilnika in se lahko prilagaja z uravnoteženjem obremenitve med več vozlišči.

Arhitektura Dendrite podpira horizontalno skaliranje in temelji na ločitvi krmilnikov v obliki mikroservisov, kjer ima vsak primerek mikroservisa svoje tabele v bazi podatkov.

Izravnalnik obremenitve je odgovoren za pošiljanje klicev mikro storitvam. Niti (go rutine) se uporabljajo za vzporeditev operacij v kodi, kar omogoča uporabo virov vseh jeder CPU, ne da bi jih delili na ločene procese.

Dendrite podpira delo v dveh načinih: monolitnem in večkomponentnem (polilitnem).

  • V monolitnem načinu, Vse mikro storitve so povezane v izvršljivo datoteko, delujejo v procesu in neposredno medsebojno delujejo.
  • V večkomponentnem načinu (grozd) lahko mikro storitve zaženemo ločeno, tudi z različnimi različnimi vozlišči. Interakcija komponent v večkomponentnem načinu se izvaja z uporabo notranjega API-ja HTTP in platforme Apache Kafka.

Razvoj se izvaja na podlagi specifikacij protokola Matrix in z uporabo dveh sklopov testov: skupnih sinteznih testov s Synapse in novega komplementa.

V trenutni fazi razvoja Dendrite uspešno opravi 56 % testov odjemalsko-strežniškega API-ja in 77 % testov federacijskega API-ja, medtem ko je dejanska pokritost funkcionalnosti ocenjena na 70 % za odjemalsko-strežniški API in 95 % za federacijski API.

Beta faza pomeni, da je Dendrite pripravljen za začetno uvajanje in prehod v razvoj z rednimi novimi izdajami. Med izdajami se bo shema shranjevanja baze podatkov zdaj posodabljala (za razliko od nameščanja fragmentov iz repozitorija se po posodobitvi vsebina baze podatkov ne bo izgubila).

Spremembe, ki prekinejo združljivost nazaj, spremenijo strukturo baze podatkov ali zahtevajo spremembe konfiguracije, bodo na voljo le v večjih izdajah.

Trenutno je za ustvarjanje majhnih domačih strežnikov in vozlišč P2P priporočljiva uporaba Dendrite v monolitnem načinu s PostgreSQL DBMS . SQLite še ni priporočljiv zaradi nerešenih težav z obravnavanjem sočasnih operacij.

Funkcije, ki še niso implementirane v Dendrite, vključujejo : potrdila o prejemu sporočil, potrdila o branju, potisna obvestila, OpenID, povezovanje e-pošte, iskanje na strani strežnika, imenik uporabnikov, sezname prezrtih uporabnikov, ustvarjanje skupin in skupnosti, ocenjevanje spletne prisotnosti uporabnika, vnos gostov in interakcijo s tretjimi omrežji.

Osnovna funkcionalnost delovanja klepetalnic (ustvarjanje, vabila, pravila za preverjanje pristnosti), način združevanja udeležencev v sobah, sinhronizacija dogodkov po vrnitvi izven povezave, računi, profili, indikacija klicanja, prenos in nalaganje datotek za urejanje (Media API) so na voljo za uporabo sporočil, ACL-jev, označevanja in šifrirnih naprav ter seznamov ključev.

Spomnimo se, da platforma Matrix za organizacijo decentraliziranih komunikacij uporablja HTTPS + JSON kot svoj transportni protokol, z možnostjo uporabe WebSockets ali protokola, ki temelji na CoAP + Noise. Sistem je strukturiran kot skupnost strežnikov, ki lahko medsebojno komunicirajo in se združujejo v skupno decentralizirano omrežje.

Sporočila se replicirajo na vse strežnike, s katerimi so povezani udeleženci sporočanja. Sporočila se širijo med strežniki na podoben način, kot se zapisi (commit) širijo med repozitoriji Git.

Vir: https://matrix.org


Dodaj kot prednostni vir v Googlu