Desde Linux David Naranjo  

Dendrite, un servidor de comunicaciones con la implementación del protocolo Matrix

Dendrite es un servidor de comunicaciones que está siendo desarrollado por el equipo de Matrix y se posiciona como una implementación de la segunda generación de componentes del servidor Matrix.

A diferencia del servidor de referencia Synapse escrito en Python, el código Dendrite se desarrolla en Go. Ambas implementaciones oficiales se distribuyen bajo la licencia Apache 2.0.

Como parte del proyecto Ruma, se está desarrollando una versión del servidor Matrix en el lenguaje Rust por separado, que se distribuye bajo la licencia MIT.

El nuevo servidor tiene como objetivo lograr una alta eficiencia, confiabilidad y escalabilidad.

Sobre Dendrite

Dendrite está por delante de Synapse en términos de rendimiento, requiere mucha menos memoria para su funcionamiento y puede escalar mediante el equilibrio de carga en varios 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 un microservicio tiene sus propias tablas en la base de datos.

El equilibrador de carga es responsable de enviar llamadas a microservicios. Para paralelizar las operaciones en el código se utilizan threads (rutinas go), que permiten utilizar los recursos de todos los núcleos de CPU sin dividirlos en procesos separados.

Dendrite admite el trabajo en dos modos: monolítico y multicomponente (polylith).

  • En el modo monolítico, todos los microservicios están vinculados en un archivo ejecutable, se ejecutan en un proceso e interactúan directamente entre sí.
  • En el modo multicomponente (clúster), los microservicios se pueden lanzar por separado, incluso con diversidad en diferentes nodos. La interacción de componentes en modo multicomponente se lleva a cabo utilizando la API HTTP interna y la plataforma Apache Kafka.

El desarrollo se lleva a cabo sobre la base de las especificaciones del protocolo Matrix y utilizando dos conjuntos de pruebas: las pruebas sytest comunes con Synapse y la nueva suite Complement.

En la etapa actual de desarrollo, Dendrite supera con éxito 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 la API de cliente-servidor y un 95% para la API de federación.

La etapa beta indica que Dendrite está listo para la implementación inicial y la transición al desarrollo con nuevas versiones periódicas. Entre lanzamientos, el esquema de almacenamiento de la base de datos ahora se actualizará (a diferencia de la instalación de fragmentos del repositorio, después de la actualización, el contenido de la base de datos no se perderá).

Los cambios que rompen la compatibilidad con versiones anteriores, cambian la estructura de la base de datos o requieren cambios de configuración solo se ofrecerán en las versiones principales.

Por el momento, se recomienda utilizar Dendrite en modo monolítico junto con PostgreSQL DBMS 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 aún no implementadas en Dendrite incluyen: reconocimientos de mensajes, marcas de lectura, notificaciones push, 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 de un usuario, invitado insumos, interacción con redes de terceros.

Funcionalidad básica para el funcionamiento de 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 de fuera de línea, cuentas, perfiles, indicación de marcación, descarga y carga de archivos (Media API), edición están disponibles para su uso mensajes, ACL, etiquetado y listas de claves y dispositivos de cifrado de extremo a extremo.

Recordemos que la plataforma para organizar comunicaciones descentralizadas Matrix utiliza HTTPS + JSON como transporte con la capacidad de utilizar WebSockets o un protocolo basado en CoAP + Noise. El sistema está formado como una comunidad de servidores que pueden interactuar entre sí y se combinan 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 una manera similar a cómo se propagan las confirmaciones entre los repositorios de Git.

Fuente: https://matrix.org

 

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.