Dendrite, um servidor de comunicação com a implementação do protocolo Matrix

Dendrite é um servidor de comunicações isso é ser desenvolvido pela equipe Matrix e está posicionado como uma implementação da segunda geração de componentes do servidor Matrix.

Ao contrário do servidor de referência Synapse escrito em Python, o código Dendrite é desenvolvido em Go. Ambas as implementações oficiais são distribuídas sob a licença Apache 2.0.

Como parte do projeto Ruma, uma versão separada do servidor Matrix na linguagem Rust está sendo desenvolvida, que é distribuída sob a licença do MIT.

O novo servidor visa alcançar alta eficiência, confiabilidade e escalabilidade.

Sobre Dendrito

Dendrito está à frente da Synapse em termos de desempenho, ele requer muito menos memória para operar e pode ser escalonado por meio do balanceamento de carga em vários nós.

Arquitetura dendrítica suporta escalonamento horizontal e é baseado na separação de controladores na forma de microsserviços, onde cada instância de um microsserviço tem suas próprias tabelas no banco de dados.

O balanceador de carga é responsável por enviar chamadas para microsserviços. Threads (rotinas go) são usados ​​para paralelizar operações no código, o que permite que os recursos de todos os núcleos da CPU sejam usados ​​sem dividi-los em processos separados.

Dendrito suporta trabalho em dois modos: monolítico e multicomponente (polilito).

  • No modo monolítico, Todos os microsserviços são vinculados em um arquivo executável, executados em um processo e interagem diretamente entre si.
  • No modo multi-componente (cluster), os microsserviços podem ser iniciados separadamente, mesmo com diversidade em nós diferentes. A interação do componente em modo multicomponente é realizada usando a API HTTP interna e a plataforma Apache Kafka.

O desenvolvimento é realizado com base nas especificações do protocolo Matrix e utilizando dois conjuntos de testes: os testes sytest comuns com Synapse e o novo pacote Complement.

No estágio atual de desenvolvimento, o Dendrite passa com sucesso em 56% dos testes de APIs cliente-servidor e 77% dos testes de API de federação, enquanto a cobertura de funcionalidade real é estimada em 70% para a API cliente-servidor e 95% para a API de federação.

O estágio beta indica que o Dendrite está pronto para implantação inicial e a transição para o desenvolvimento com novos lançamentos regulares. Entre as versões, o esquema de armazenamento do banco de dados agora será atualizado (ao contrário da instalação de blocos do repositório, após a atualização, o conteúdo do banco de dados não será perdido).

Mudanças que quebram a compatibilidade com versões anteriores, mudam a estrutura do banco de dados ou requerem mudanças de configuração só serão oferecidas nas versões principais.

Para o momento, é recomendado usar Dendrite em modo monolítico junto com PostgreSQL DBMS para criar pequenos servidores domésticos e nós P2P. O uso de SQLite ainda não é recomendado devido a problemas não resolvidos com o manuseio de operações simultâneas.

Recursos ainda não implementados em dendrito incluir: confirmações de mensagens, favoritos, notificações push, OpenID, link de e-mail, pesquisa do lado do servidor, diretório de usuários, listas de usuários ignorados, criação de grupos e comunidades, avaliação da presença online de um usuário , entradas de convidados, interação com redes de terceiros.

Funcionalidades básicas para o funcionamento de salas de chat (criação, convites, regras de autenticação), meios de federação de participantes nas salas, sincronização de eventos após retorno offline, contas, perfis, indicação de discagem, download e upload de Arquivos de edição (API de mídia) estão disponíveis para uso de mensagens, ACLs, rotulagem e dispositivo de criptografia ponta a ponta e listas de chaves.

Lembre-se que a plataforma de organização de comunicações descentralizadas Matrix usa HTTPS + JSON como um transporte com a capacidade de usar WebSockets ou um protocolo baseado em CoAP + Noise. O sistema é formado como uma comunidade de servidores que podem interagir entre si e são combinados em uma rede descentralizada comum.

As mensagens são replicadas em todos os servidores aos quais os participantes de mensagens estão conectados. As mensagens são propagadas entre os servidores de maneira semelhante a como os commits são propagados entre os repositórios Git.

fonte: https://matrix.org


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.