Sortie de Dendrite 0.1.0, un serveur de communication avec une implémentation du protocole Matrix

Publié Version du serveur Matrix Dendrites 0.1.0, qui a marqué la transition du développement vers la phase de test bêta. Dendrite est développé par l'équipe principale de développeurs de la plateforme de communication décentralisée Matrix et se positionne comme la mise en œuvre de la deuxième génération de composants de serveur Matrix. Contrairement au serveur de référence Synapse, écrit en Python, code Dendrite développe en langage Go. Les deux implémentations officielles sont sous licence Apache 2.0. Dans les limites du projet Ruma Une version du serveur Matrix en langage Rust est en cours de développement séparément, ce qui distribué par sous licence MIT.

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.

Sortie de Dendrite 0.1.0, un serveur de communication avec une implémentation du protocole Matrix

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 Apache Kafka.

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 système et un nouvel ensemble Complément. Au stade actuel de développement, Dendrite réussit 56 % des tests de l'API client-serveur et 77 % des tests de l'API de fédération, tandis que la couverture réelle des fonctionnalités est estimée à 70 % pour l'API client-serveur et à 95 % pour l'API de fédération.

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 CoAP+Bruit. Le système est constitué d'une communauté de serveurs pouvant interagir les uns avec les autres et réunis dans un réseau décentralisé commun. Les messages sont répliqués sur tous les serveurs auxquels les participants à la messagerie sont connectés. Les messages sont propagés sur les serveurs de la même manière que les commits sont propagés entre les référentiels Git. En cas de panne temporaire du serveur, les messages ne sont pas perdus, mais sont transmis aux utilisateurs après la reprise du fonctionnement du serveur. Diverses options d'identification utilisateur sont prises en charge, notamment l'e-mail, le numéro de téléphone, le compte Facebook, etc.

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 passerelles pour l'interaction de Matrix avec des systèmes basés sur d'autres protocoles, par exemple, préparé services d'envoi bidirectionnel de messages vers IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp et Slack. En plus de la messagerie texte instantanée et des chats, le système peut être utilisé pour transférer des fichiers, envoyer des notifications,
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

Ajouter un commentaire