Lanzamento de Dendrite 0.1.0, un servidor de comunicación cunha implementación do protocolo Matrix

publicado Versión do servidor Matrix Dendrita 0.1.0, que marcou a transición do desenvolvemento á fase de probas beta. Dendrite está a ser desenvolvido polo equipo principal de desenvolvedores da plataforma de comunicacións descentralizadas Matrix e sitúase como a implementación da segunda xeración de compoñentes do servidor Matrix. A diferenza do servidor de referencia Sinapse, escrito en Python, código Dendrite desenvólvese en idioma Go. Ambas as implementacións oficiais están licenciadas baixo a licenza Apache 2.0. Nos límites do proxecto Ruma Estase a desenvolver por separado unha versión do servidor Matrix na linguaxe Rust, que distribuído por baixo a licenza MIT.

O novo servidor está dirixido a lograr unha alta eficiencia, fiabilidade e escalabilidade. Dendrita supera a Synapse, require moito menos memoria para funcionar e pode escalar mediante o equilibrio de carga en varios nodos. A arquitectura Dendrite admite o escalado horizontal e baséase na separación de controladores en forma de microservizos, onde cada instancia de microservizo ten as súas propias táboas na base de datos. O equilibrador de carga envía chamadas aos microservizos. Para paralelizar as operacións no código utilízanse fíos (rutinas go), que permiten utilizar os recursos de todos os núcleos da CPU sen dividilos en procesos separados.

Lanzamento de Dendrite 0.1.0, un servidor de comunicación cunha implementación do protocolo Matrix

A dendrita admite dous modos: monolítico e polilitico. No modo monolítico, todos os microservizos están empaquetados nun único ficheiro executable, execútanse nun único proceso e interactúan directamente entre si. No modo multicompoñente (clúster), os microservizos pódense lanzar por separado, incluídos distribuídos en distintos nodos. Interacción de compoñentes en
o modo multicompoñente realízase mediante a API e a plataforma HTTP internas Apache Kafka.

O desenvolvemento realízase baseándose nas especificacións do protocolo Matrix e utilizando dous conxuntos de probas: probas comúns a Synapse sytest e un novo conxunto Complemento. Na fase actual de desenvolvemento, Dendrite supera o 56 % das probas da API Cliente-Servidor e o 77 % das probas da API da Federación, mentres que a cobertura real da funcionalidade estímase nun 70 % para a API Cliente-Servidor e nun 95 % para a API de Federación.

A fase de proba beta indica que Dendrite está listo para a súa implementación inicial e a transición ao desenvolvemento con novos lanzamentos formados periodicamente. Entre as versións, o esquema de almacenamento de datos na base de datos agora actualizarase (a diferenza da instalación de porcións do repositorio, o contido da base de datos non se perderá despois da actualización). Os cambios que rompan a compatibilidade con versións anteriores, cambien a estrutura da base de datos ou requiran cambios de configuración só se ofrecerán nas versións principais. Actualmente recoméndase usar Dendrita en modo monolítico xunto co DBMS PostgreSQL para crear pequenos servidores domésticos e nós P2P. Aínda non se recomenda o uso de SQLite debido a problemas sen resolver co manexo de operacións simultáneas.

As funcións que aínda non se implementaron en Dendrite inclúen confirmacións de recepción de mensaxes, marcas de lectura, notificacións push, OpenID, vinculación de correo electrónico, busca no servidor, directorio de usuarios, listas de usuarios ignorados, creación de grupos e comunidades, avaliación da presenza de usuarios en liña, entradas de invitados, interacción con redes de terceiros.

Dispoñibles para o seu uso son funcionalidades básicas para salas de chat (creación, invitacións, regras de autenticación), medios de federación de participantes en salas, sincronización de eventos despois de volver fóra de liña, contas, perfís, indicación de marcado, descarga e carga de ficheiros (API de medios), editar mensaxes, ACL, vincular etiquetas e traballar con listas de dispositivos e claves para o cifrado de extremo a extremo.

Lembremos que a plataforma de organización de comunicacións descentralizadas Matrix utiliza HTTPS+JSON como transporte coa posibilidade de utilizar WebSockets ou un protocolo baseado en CoAP+Ruído. O sistema está formado como unha comunidade de servidores que poden interactuar entre si e están unidos nunha rede descentralizada común. As mensaxes replícanse en todos os servidores aos que están conectados os participantes da mensaxería. As mensaxes propáganse entre os servidores do mesmo xeito que as confirmacións se propagan entre os repositorios de Git. No caso dunha interrupción temporal do servidor, as mensaxes non se perden, senón que transmítense aos usuarios despois de que o servidor retome o seu funcionamento. Admítense varias opcións de ID de usuario, incluíndo correo electrónico, número de teléfono, conta de Facebook, etc.

Non hai un único punto de falla ou control de mensaxes na rede. Todos os servidores obxecto da discusión son iguais entre si.
Calquera usuario pode executar o seu propio servidor e conectalo a unha rede común. É posible crear pasarelas para a interacción de Matrix con sistemas baseados noutros protocolos, por exemplo, preparado servizos para enviar mensaxes bidireccionais a IRC, Facebook, Telegram, Skype, Hangouts, correo electrónico, WhatsApp e Slack. Ademais das mensaxes de texto instantáneas e chats, o sistema pode usarse para transferir ficheiros, enviar notificacións,
organizar teleconferencias, realizar chamadas de voz e videollamadas. Tamén admite funcións avanzadas como a notificación da escritura, a avaliación da presenza en liña do usuario, a confirmación de lectura, as notificacións push, a busca no servidor, a sincronización do historial e o estado do cliente.

Fonte: opennet.ru

Engadir un comentario