Lançamento do Dendrite 0.1.0, um servidor de comunicação com implementação do protocolo Matrix

publicado Lançamento do servidor Matrix Dendrito 0.1.0, que marcou a transição do desenvolvimento para a fase de testes beta. Dendrite está sendo desenvolvido pela equipe principal de desenvolvedores da plataforma de comunicações descentralizadas Matrix e está posicionado como a implementação da segunda geração de componentes do servidor Matrix. Ao contrário do servidor de referência Sinapse, escrito em Python, código Dendrite está desenvolvendo na linguagem Go. Ambas as implementações oficiais são licenciadas sob a licença Apache 2.0. Nos limites do projeto Ruma Uma versão do servidor Matrix na linguagem Rust está sendo desenvolvida separadamente, que distribuído por sob a licença do MIT.

O novo servidor visa alcançar alta eficiência, confiabilidade e escalabilidade. O Dendrite supera o Synapse, requer significativamente menos memória para operar e pode ser dimensionado por meio de balanceamento de carga em vários nós. A arquitetura Dendrite suporta escalonamento horizontal e é baseada na separação de manipuladores na forma de microsserviços, onde cada instância de microsserviço possui suas próprias tabelas no banco de dados. O balanceador de carga despacha chamadas para microsserviços. Para paralelizar as operações no código, são utilizados threads (rotinas go), que permitem utilizar os recursos de todos os núcleos da CPU sem dividi-los em processos separados.

Lançamento do Dendrite 0.1.0, um servidor de comunicação com implementação do protocolo Matrix

Dendrite suporta dois modos: monolítico e polilítico. No modo monolítico, todos os microsserviços são empacotados em um único arquivo executável, executados em um único processo e interagem diretamente entre si. No modo multicomponente (cluster), os microsserviços podem ser lançados separadamente, inclusive distribuídos em diferentes nós. Interação de componentes em
o modo multicomponente é executado 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 – testes comuns ao Synapse teste de sistema e um novo conjunto Complemento. No estágio atual de desenvolvimento, o Dendrite passa em 56% dos testes da API Cliente-Servidor e em 77% dos testes da API da Federação, enquanto a cobertura real da funcionalidade é estimada em 70% para a API Cliente-Servidor e 95% para a API da Federação.

A fase de testes beta indica que o Dendrite está pronto para implementação inicial e transição para desenvolvimento com novos lançamentos formados periodicamente. Entre as versões, o esquema de armazenamento de dados no banco de dados será atualizado (ao contrário da instalação de fatias do repositório, o conteúdo do banco de dados não será perdido após a atualização). Alterações que quebrem a compatibilidade com versões anteriores, alterem a estrutura do banco de dados ou exijam alterações de configuração serão oferecidas apenas nas versões principais. Atualmente, recomenda-se que Dendrite seja usado em modo monolítico em conjunto com o SGBD PostgreSQL para criar pequenos servidores domésticos e nós P2P. O uso do SQLite ainda não é recomendado devido a problemas não resolvidos no tratamento de operações simultâneas.

Os recursos que ainda não foram implementados no Dendrite incluem confirmações de recebimento de mensagens, marcas de leitura, notificações push, OpenID, vinculação de e-mail, pesquisa no servidor, diretório de usuários, listas de usuários ignorados, criação de grupos e comunidades, avaliação da presença online do usuário, entradas de convidados, interação com redes de terceiros.

Estão disponíveis para utilização funcionalidades básicas para salas de bate-papo (criação, convites, regras de autenticação), meios de federação de participantes em salas, sincronização de eventos após retorno do offline, contas, perfis, indicação de discagem, download e upload de arquivos (API de mídia), editar mensagens, ACLs, vincular tags e trabalhar com listas de dispositivos e chaves para criptografia ponta a ponta.

Recordemos que a plataforma de organização de comunicações descentralizadas Matrix utiliza HTTPS+JSON como transporte com capacidade de utilizar WebSockets ou um protocolo baseado em CoAP+Ruído. O sistema é formado como uma comunidade de servidores que podem interagir entre si e estão unidos em uma rede descentralizada comum. As mensagens são replicadas em todos os servidores aos quais os participantes das mensagens estão conectados. As mensagens são propagadas entre servidores da mesma forma que os commits são propagados entre repositórios Git. No caso de uma interrupção temporária do servidor, as mensagens não são perdidas, mas são transmitidas aos usuários após o servidor retomar a operação. Várias opções de ID de usuário são suportadas, incluindo e-mail, número de telefone, conta do Facebook, etc.

Não existe um ponto único de falha ou controle de mensagens na rede. Todos os servidores abrangidos pela discussão são iguais entre si.
Qualquer usuário pode executar seu próprio servidor e conectá-lo a uma rede comum. É possível criar entradas para interação do Matrix com sistemas baseados em outros protocolos, por exemplo, preparado serviços de envio bidirecional de mensagens para IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp e Slack. Além de mensagens de texto instantâneas e chats, o sistema pode ser usado para transferir arquivos, enviar notificações,
organização de teleconferências, realização de chamadas de voz e vídeo. Ele também oferece suporte a recursos avançados como notificação de digitação, avaliação da presença online do usuário, confirmação de leitura, notificações push, pesquisa no servidor, sincronização de histórico e status do cliente.

Fonte: opennet.ru

Adicionar um comentário