Rilascio di Dendrite 0.1.0, un server di comunicazione con un'implementazione del protocollo Matrix

pubblicato Rilascio del server Matrix Dendrite 0.1.0, che ha segnato il passaggio dello sviluppo alla fase di beta testing. Dendrite è stato sviluppato dal team principale di sviluppatori della piattaforma di comunicazione decentralizzata Matrix e si posiziona come l'implementazione della seconda generazione di componenti server Matrix. A differenza del server di riferimento Synapse, scritto in Python, codice Dendrite si sta sviluppando nella lingua Go. Entrambe le implementazioni ufficiali sono concesse in licenza con la licenza Apache 2.0. Nei confini del progetto Ruma Una versione del server Matrix nel linguaggio Rust è in fase di sviluppo separatamente, la quale distribuito da con licenza MIT.

Il nuovo server mira a raggiungere elevata efficienza, affidabilità e scalabilità. Dendrite supera Synapse, richiede molta meno memoria per funzionare e può scalare attraverso il bilanciamento del carico su più nodi. L'architettura Dendrite supporta il ridimensionamento orizzontale e si basa sulla separazione dei gestori sotto forma di microservizi, in cui ciascuna istanza di microservizio ha le proprie tabelle nel database. Il sistema di bilanciamento del carico invia le chiamate ai microservizi. Per parallelizzare le operazioni nel codice vengono utilizzati i thread (go routine), che consentono di utilizzare le risorse di tutti i core della CPU senza dividerle in processi separati.

Rilascio di Dendrite 0.1.0, un server di comunicazione con un'implementazione del protocollo Matrix

Dendrite supporta due modalità: monolitica e polilitica. In modalità monolitica, tutti i microservizi sono racchiusi in un unico file eseguibile, eseguiti in un unico processo e interagiscono direttamente tra loro. Nella modalità multicomponente (cluster), i microservizi possono essere avviati separatamente, anche distribuiti su diversi nodi. Interazione dei componenti in
la modalità multicomponente viene eseguita utilizzando l'API e la piattaforma HTTP interne Apache Kafka.

Lo sviluppo viene effettuato sulla base delle specifiche del protocollo Matrix e utilizzando due suite di test: test comuni a Synapse systest e un nuovo set Complemento. Allo stadio attuale di sviluppo, Dendrite supera il 56% dei test API Client-Server e il 77% dei test API Federation, mentre la copertura effettiva delle funzionalità è stimata al 70% per le API Client-Server e al 95% per le API Federation.

La fase di beta testing indica che Dendrite è pronto per l'implementazione iniziale e la transizione allo sviluppo con nuove versioni periodicamente formate. Tra i rilasci, lo schema di archiviazione dei dati nel database verrà ora aggiornato (a differenza dell'installazione delle sezioni dal repository, il contenuto del database non andrà perso dopo l'aggiornamento). Le modifiche che interrompono la compatibilità con le versioni precedenti, modificano la struttura del database o richiedono modifiche alla configurazione verranno offerte solo nelle versioni principali. Attualmente si consiglia di utilizzare Dendrite in modalità monolitica insieme al DBMS PostgreSQL per creare piccoli homeserver e nodi P2P. L'uso di SQLite non è ancora consigliato a causa di problemi irrisolti relativi alla gestione delle operazioni simultanee.

Le funzionalità che non sono state ancora implementate in Dendrite includono conferme di ricezione dei messaggi, contrassegni di lettura, notifiche push, OpenID, associazione e-mail, ricerca lato server, directory utente, elenchi di utenti ignorati, creazione di gruppi e comunità, valutazione della presenza online dell'utente, input degli ospiti, interazione con reti di terze parti.

Sono disponibili funzionalità di base per le chat room (creazione, inviti, regole di autenticazione), mezzi di federazione dei partecipanti alle room, sincronizzazione di eventi dopo il ritorno dalla modalità offline, account, profili, indicazione di composizione, download e caricamento di file (Media API), modifica di messaggi, ACL, associazione di tag e utilizzo di elenchi di dispositivi e chiavi per la crittografia end-to-end.

Ricordiamo che la piattaforma per l'organizzazione delle comunicazioni decentralizzate Matrix utilizza HTTPS+JSON come trasporto con la possibilità di utilizzare WebSocket o un protocollo basato su CoAP+Rumore. Il sistema è formato come una comunità di server che possono interagire tra loro e sono uniti in una rete decentralizzata comune. I messaggi vengono replicati su tutti i server a cui sono connessi i partecipanti alla messaggistica. I messaggi vengono propagati tra i server nello stesso modo in cui i commit vengono propagati tra i repository Git. In caso di interruzione temporanea del server, i messaggi non vengono persi, ma vengono trasmessi agli utenti dopo che il server riprende il funzionamento. Sono supportate varie opzioni ID utente, inclusi e-mail, numero di telefono, account Facebook, ecc.

Non esiste un singolo punto di errore o controllo dei messaggi attraverso la rete. Tutti i server oggetto della discussione sono uguali tra loro.
Qualsiasi utente può eseguire il proprio server e collegarlo a una rete comune. È possibile creare gateway per l'interazione di Matrix con sistemi basati su altri protocolli, ad esempio, preparato servizi per l'invio bidirezionale di messaggi a IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp e Slack. Oltre ai messaggi di testo istantanei e alle chat, il sistema può essere utilizzato per trasferire file, inviare notifiche,
organizzare teleconferenze, effettuare chiamate vocali e videochiamate. Supporta inoltre funzionalità avanzate come la notifica della digitazione, la valutazione della presenza online dell'utente, la conferma di lettura, le notifiche push, la ricerca lato server, la sincronizzazione della cronologia e dello stato del client.

Fonte: opennet.ru

Aggiungi un commento