Lanzamiento de Dendrite 0.1.0, un servidor de comunicaciones con una implementación del protocolo Matrix

publicado Lanzamiento del servidor Matrix Dendrita 0.1.0, que marcó la transición del desarrollo a la etapa de prueba beta. Dendrite está siendo desarrollado por el equipo central de desarrolladores de la plataforma de comunicaciones descentralizadas Matrix y se posiciona como la implementación de la segunda generación de componentes del servidor Matrix. A diferencia del servidor de referencia Synapse, escrito en Python, código Dendrite está desarrollando en idioma Go. Ambas implementaciones oficiales tienen la licencia Apache 2.0. En los límites del proyecto Ruma Se está desarrollando por separado una versión del servidor Matrix en lenguaje Rust, que distribuido por bajo la licencia del MIT.

El nuevo servidor tiene como objetivo lograr alta eficiencia, confiabilidad y escalabilidad. Dendrite supera a Synapse, requiere significativamente menos memoria para funcionar y puede escalar mediante el equilibrio de carga en múltiples nodos. La arquitectura Dendrite admite el escalado horizontal y se basa en la separación de controladores en forma de microservicios, donde cada instancia de microservicio tiene sus propias tablas en la base de datos. El equilibrador de carga envía llamadas a microservicios. Para paralelizar operaciones en el código, se utilizan subprocesos (rutinas go), que le permiten utilizar los recursos de todos los núcleos de la CPU sin dividirlos en procesos separados.

Lanzamiento de Dendrite 0.1.0, un servidor de comunicaciones con una implementación del protocolo Matrix

Dendrite admite dos modos: monolítico y polilítico. En modo monolítico, todos los microservicios se empaquetan en un único archivo ejecutable, se ejecutan en un único proceso e interactúan directamente entre sí. En el modo multicomponente (clúster), los microservicios se pueden iniciar por separado, incluso distribuidos en diferentes nodos. Interacción de componentes en
El modo multicomponente se lleva a cabo utilizando la API y la plataforma HTTP interna. Apache Kafka.

El desarrollo se lleva a cabo basándose en las especificaciones del protocolo Matrix y utilizando dos conjuntos de pruebas: pruebas comunes a Synapse. prueba del sistema y un nuevo conjunto Complemento. En la etapa actual de desarrollo, Dendrite pasa el 56% de las pruebas de API Cliente-Servidor y el 77% de las pruebas de API de Federación, mientras que la cobertura de funcionalidad real se estima en un 70% para API Cliente-Servidor y un 95% para API de Federación.

La etapa de prueba beta indica que Dendrite está listo para la implementación inicial y la transición al desarrollo con nuevas versiones formadas periódicamente. Entre versiones, el esquema de almacenamiento de datos en la base de datos ahora se actualizará (a diferencia de la instalación de segmentos desde el repositorio, el contenido de la base de datos no se perderá después de la actualización). Los cambios que rompan la compatibilidad con versiones anteriores, cambien la estructura de la base de datos o requieran cambios de configuración solo se ofrecerán en las versiones principales. Actualmente, se recomienda utilizar Dendrite en modo monolítico junto con el DBMS PostgreSQL para crear pequeños servidores domésticos y nodos P2P. Aún no se recomienda el uso de SQLite debido a problemas no resueltos con el manejo de operaciones concurrentes.

Las características que aún no se han implementado en Dendrite incluyen confirmaciones de recepción de mensajes, marcas de lectura, notificaciones automáticas, OpenID, enlace de correo electrónico, búsqueda del lado del servidor, directorio de usuarios, listas de ignorados de usuarios, creación de grupos y comunidades, evaluación de la presencia en línea del usuario, entradas de invitados, interacción con redes de terceros.

Están disponibles para su uso la funcionalidad básica para salas de chat (creación, invitaciones, reglas de autenticación), medios de federación de participantes en salas, sincronización de eventos después de regresar fuera de línea, cuentas, perfiles, indicación de marcación, descarga y carga de archivos (Media API), editar mensajes, ACL, vincular etiquetas y trabajar con listas de dispositivos y claves para cifrado de extremo a extremo.

Recordemos que la plataforma de organización de comunicaciones descentralizadas Matrix utiliza como transporte HTTPS+JSON con posibilidad de utilizar WebSockets o un protocolo basado en COAP+ruido. El sistema se forma como una comunidad de servidores que pueden interactuar entre sí y están unidos en una red descentralizada común. Los mensajes se replican en todos los servidores a los que están conectados los participantes de la mensajería. Los mensajes se propagan entre servidores de la misma manera que las confirmaciones se propagan entre repositorios de Git. En caso de una interrupción temporal del servidor, los mensajes no se pierden, sino que se transmiten a los usuarios una vez que el servidor reanuda su funcionamiento. Se admiten varias opciones de identificación de usuario, incluido el correo electrónico, el número de teléfono, la cuenta de Facebook, etc.

No existe un punto único de falla o control de mensajes en toda la red. Todos los servidores cubiertos por la discusión son iguales entre sí.
Cualquier usuario puede ejecutar su propio servidor y conectarlo a una red común. Es posible crear puertas de enlace para la interacción de Matrix con sistemas basados ​​en otros protocolos, por ejemplo, preparado servicios de envío bidireccional de mensajes a IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp y Slack. Además de mensajes de texto instantáneos y chats, el sistema se puede utilizar para transferir archivos, enviar notificaciones,
organizar teleconferencias, realizar llamadas de voz y video. También admite funciones avanzadas como notificación de escritura, evaluación de la presencia en línea del usuario, confirmación de lectura, notificaciones automáticas, búsqueda del lado del servidor, sincronización del historial y estado del cliente.

Fuente: opennet.ru

Añadir un comentario