Le nouveau serveur vise à atteindre une efficacité, une fiabilité et une évolutivité élevées. Dendrite surpasse Synapse, nécessite beaucoup moins de mémoire pour fonctionner et peut évoluer grâce à l'équilibrage de charge sur plusieurs nœuds. L'architecture Dendrite prend en charge la mise à l'échelle horizontale et est basée sur la séparation des gestionnaires sous forme de microservices, où chaque instance de microservice possède ses propres tables dans la base de données. L'équilibreur de charge distribue les appels aux microservices. Pour paralléliser les opérations dans le code, des threads (routines go) sont utilisés, qui vous permettent d'utiliser les ressources de tous les cœurs de processeur sans les diviser en processus séparés.
Dendrite prend en charge deux modes : monolithique et polylithique. En mode monolithique, tous les microservices sont regroupés dans un seul fichier exécutable, exécutés en un seul processus et interagissent directement les uns avec les autres. En mode multi-composants (cluster), les microservices peuvent être lancés séparément, y compris distribués sur différents nœuds. Interaction des composants dans
le mode multi-composants est réalisé à l'aide de l'API et de la plateforme HTTP internes
Le développement est réalisé sur la base des spécifications du protocole Matrix et à l'aide de deux suites de tests - tests communs à Synapse
La phase de test bêta indique que Dendrite est prêt pour la mise en œuvre initiale et la transition vers le développement avec de nouvelles versions périodiquement formées. Entre les versions, le schéma de stockage des données dans la base de données sera désormais mis à jour (contrairement à l'installation de tranches à partir du référentiel, le contenu de la base de données ne sera pas perdu après la mise à jour). Les modifications qui rompent la compatibilité ascendante, modifient la structure de la base de données ou nécessitent des modifications de configuration ne seront proposées que dans les versions majeures. Il est actuellement recommandé d'utiliser Dendrite en mode monolithique en conjonction avec le SGBD PostgreSQL pour créer de petits serveurs domestiques et nœuds P2P. L'utilisation de SQLite n'est pas encore recommandée en raison de problèmes non résolus liés à la gestion des opérations simultanées.
Les fonctionnalités qui n'ont pas encore été implémentées dans Dendrite incluent les confirmations de réception des messages, les marques de lecture, les notifications push, OpenID, la liaison de courrier électronique, la recherche côté serveur, l'annuaire des utilisateurs, les listes d'utilisateurs ignorés, la création de groupes et de communautés, l'évaluation de la présence en ligne des utilisateurs, les entrées des invités, interaction avec des réseaux tiers.
Sont disponibles les fonctionnalités de base des salons de discussion (création, invitations, règles d'authentification), les moyens de fédération des participants dans les salons, la synchronisation des événements après retour hors ligne, les comptes, les profils, l'indication de numérotation, le téléchargement et l'upload de fichiers (API Media), l'édition de messages, d'ACL, la liaison de balises et l'utilisation de listes de périphériques et de clés pour le cryptage de bout en bout.
Rappelons que la plateforme d'organisation des communications décentralisées Matrix utilise HTTPS+JSON comme transport avec la possibilité d'utiliser des WebSockets ou un protocole basé sur
Il n’existe pas de point unique de défaillance ni de contrôle des messages sur le réseau. Tous les serveurs couverts par la discussion sont égaux les uns aux autres.
N'importe quel utilisateur peut exécuter son propre serveur et le connecter à un réseau commun. Il est possible de créer
organiser des téléconférences, passer des appels vocaux et vidéo. Il prend également en charge des fonctionnalités avancées telles que la notification de saisie, l'évaluation de la présence en ligne de l'utilisateur, la confirmation de lecture, les notifications push, la recherche côté serveur, la synchronisation de l'historique et de l'état du client.
Source: opennet.ru