lanzamiento del servidor Matrix , que marca la transición del desarrollo a la etapa de beta-testing. Dendrite es desarrollado por el equipo principal de desarrolladores de la plataforma de comunicación descentralizada Matrix y se posiciona como una implementación de segunda generación de los componentes del servidor Matrix. A diferencia del servidor de referencia , escrito en Python, el código de Dendrite está escrito en Go. Ambas implementaciones oficiales se distribuyen bajo la licencia Apache 2.0. En el marco del proyecto se desarrolla por separado una variante del servidor Matrix en Rust, que bajo licencia MIT.
El nuevo servidor está enfocado en lograr alta eficiencia, fiabilidad y escalabilidad. Dendrite supera a Synapse en rendimiento, requiere significativamente menos memoria para su funcionamiento y puede escalar a través de la distribución de carga en múltiples nodos. La arquitectura de Dendrite soporta escalabilidad horizontal y se basa en la división de controladores en forma de microservicios, donde cada instancia de microservicio tiene sus propias tablas en la base de datos. La gestión de las solicitudes a los microservicios está a cargo del equilibrador de carga. Para parallelizar las operaciones en el código se utilizan hilos (go routines), lo que permite hacer uso de los recursos de todos los núcleos del CPU sin la necesidad de separar en procesos individuales.
Dendrite soporta el funcionamiento en dos modos: monolítico y multi-componente (polilito). En el modo monolítico, todos los microservicios están compactados en un solo archivo ejecutable, se ejecutan dentro de un proceso y se comunican directamente entre sí. En el modo multi-componente (clúster), los microservicios pueden iniciarse por separado, incluso distribuyéndose a diferentes nodos. La interacción de los componentes en
el modo multi-componente se realiza a través de una API HTTP interna y la plataforma .
El desarrollo se lleva a cabo en base a las especificaciones del protocolo Matrix y utilizando dos conjuntos de pruebas: pruebas comunes con Synapse y un nuevo conjunto . En la etapa actual de desarrollo, Dendrite está pasando con éxito el 56% de las pruebas de Client-Server API y el 77% de las pruebas de Federation API, mientras que la cobertura funcional real se estima en un 70% para Client-Server API y un 95% para Federation API.
La fase de beta testing indica que Dendrite está listo para su implementación inicial y la transición al desarrollo con la formación periódica de nuevas versiones. Entre las versiones, ahora se asegurará la actualización del esquema de almacenamiento de datos en la base de datos (a diferencia de la instalación de cortes del repositorio, después de la actualización, el contenido de la base de datos no se perderá). Los cambios que rompan la compatibilidad hacia atrás, cambien la estructura de la base de datos o requieran ajustes en la configuración se propondrán solo en versiones significativas. Dendrite se recomienda utilizar en modo monolítico junto con la base de datos PostgreSQL para crear pequeños servidores de origen (homeserver) y nodos P2P. El uso de SQLite no se recomienda por el momento debido a problemas no resueltos con el manejo de operaciones concurrentes.
Entre las funcionalidades que aún no se han implementado en Dendrite se destacan las confirmaciones de recepción de mensajes, las marcas de lectura, las notificaciones push, OpenID, la vinculación a email, la búsqueda del lado del servidor, el catálogo de usuarios, las listas de ignorados, la creación de grupos y comunidades, la evaluación de la presencia del usuario en línea, los accesos como invitado y la interacción con redes externas.
Está disponible la funcionalidad básica para trabajar con salas de chat (creación, invitaciones, reglas de autenticación), herramientas de federación de participantes en las salas, sincronización de eventos tras regresar de offline, cuentas, perfiles, indicación de escritura, carga y entrega de archivos (Media API), edición de mensajes, ACL, vinculación de etiquetas y gestión de listas de dispositivos y claves para el cifrado de extremo a extremo.
Recordemos que la plataforma para la organización de comunicaciones descentralizadas Matrix utiliza como transporte HTTPS+JSON con la posibilidad de utilizar WebSockets o un protocolo basado en +El sistema se forma como una asociación de servidores que pueden interactuar entre sí y se unen en una red descentralizada común. Los mensajes se replican en todos los servidores a los que están conectados los participantes del intercambio de mensajes. Los mensajes se distribuyen entre los servidores de manera similar a cómo se propagan los commits entre repositorios de Git. En caso de un apagón temporal del servidor, los mensajes no se pierden, sino que se entregan a los usuarios una vez que el servidor vuelve a funcionar. Se admiten varias opciones de identificación del usuario, incluyendo email, número de teléfono, cuenta de Facebook, etc.
No hay un único punto de fallo o control sobre los mensajes en la red. Todos los servidores involucrados en la discusión son iguales entre sí.
Cualquier usuario puede iniciar su propio servidor y conectarlo a la red común. Es posible crear para conectar Matrix con sistemas basados en otros protocolos, por ejemplo, servicios para el envío bidireccional de mensajes en IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp y Slack. Además del intercambio instantáneo de mensajes de texto y la organización de chats, el sistema puede ser usado para la transferencia de archivos, el envío de notificaciones,
organización de teleconferencias, realización de llamadas de voz y video. También se admiten funciones avanzadas como notificación de escritura, asistencia en línea del usuario, confirmación de lectura, notificaciones push, búsqueda del lado del servidor, sincronización del historial y del estado de los clientes.
Fuente: opennet.ru
