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.
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
O desenvolvimento é realizado com base nas especificações do protocolo Matrix e utilizando dois conjuntos de testes – testes comuns ao Synapse
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
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
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