简体中文
Turms é o mecanismo de mensagens instantâneas de código aberto mais avançado para 100 mil a 10 milhões de usuários simultâneos no mundo. Consulte a documentação do Turms para obter detalhes.
(Versão dos servidores de demonstração: ghcr.io/turms-im/turms-admin:latest
, ghcr.io/turms-im/turms-gateway:latest
, ghcr.io/turms-im/turms-service:latest
)
administrador do turms: http://playground.turms.im:6510
Tanto a conta quanto a senha são: guest
. (A conta tem permissão para consultar e adicionar dados, mas não pode atualizar e excluir dados.)
turms-gateway: http://playground.turms.im:10510 (porta para acesso WebSocket) e http://playground.turms.im:11510 (porta para acesso TCP)
turms-service (API Admin em ambiente de desenvolvimento com suporte para dados falsos): http://playground.turms.im:8510
Prometeu: http://playground.turms.im:9090; Grafana: http://playground.turms.im:3000
Você pode usar qualquer implementação turms-client-(java/js/swift) para enviar solicitações ao turms-gateway e interagir com outros usuários.
Além disso, o Playground é configurado automaticamente com apenas um comando: ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
Executando os seguintes comandos para configurar um cluster mínimo viável (incluindo turms-gateway, turms-service e turms-admin) e seus servidores dependentes (cluster fragmentado MongoDB e Redis) automaticamente:
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker compose -f docker-compose.standalone.yml up --force-recreate
Após a configuração do cluster, você pode visitar turms-admin em http://localhost:6510 e inserir a conta e a senha ( turms
por padrão). Se você efetuar login com sucesso, significa que o cluster do Turms foi configurado com sucesso.
Você também pode aplicar os módulos Terraform fornecidos pela Turms para adquirir rapidamente serviços em nuvem e configurar um cluster turms (usa instâncias spot por padrão). Depois de executar terraform apply
, aguarde cerca de 3 a 15 minutos (o Alibaba Cloud ECS é lento para extrair imagens ghcr) e, em seguida, visite http://<public IP>:6510
, se você puder acessar turms-admin, significa que o O cluster turms foi configurado com sucesso.
(Observação: os comandos a seguir comprarão automaticamente serviços em nuvem e deduzirão as taxas correspondentes de sua conta)
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms/terraform/alicloud/playground
export ALICLOUD_ACCESS_KEY= < your_access_key >
export ALICLOUD_SECRET_KEY= < your_secret_key >
terraform init
terraform apply
A arquitetura do Turms depende do design de leitura fanout para criar caixas de entrada (ou cronogramas de mensagens), e o Turms oferece suporte ao modelo push, modelo pull e modelo push-pull para estar ciente das alterações nos dados de negócios (para obter detalhes, Business Data Change Awareness ). A maioria dos outros detalhes de design também vem de projetos comerciais de IM.
E em comparação com muitos projetos com pilhas de tecnologia obsoletas, o Turms também é a única solução de mensagens instantâneas de código aberto baseada em arquitetura e tecnologia modernas e adequada para aplicações de médio e grande porte.
Além disso, o projeto de arquitetura é uma arte de troca. Alguns produtos de IM têm recursos avançados como slogan, ao custo de nenhum suporte para aplicações de médio a grande porte (eles são adequados apenas para comunicações de equipe). No entanto, o Turms considera o desempenho extremo como primeira prioridade e oferece suporte a recursos de IM completos (em vez de ricos) para oferecer suporte a aplicativos de médio e grande porte. Consulte Design e observabilidade do esquema Turms para obter detalhes.
Quando precisar comparar o Turms com outros projetos de IM de código aberto para obter recursos, você pode primeiro comparar o Turms com outros projetos de IM de código aberto com base nos seguintes recursos do Turms. Normalmente, você pode encontrar diferenças entre projetos de IM profissionais e projetos de IM amadores. Além disso, no capítulo Product Comparison
, também mencionamos as deficiências do projeto Turms para sua referência.
Nota: A principal desvantagem do atual projeto Turms é que ele não oferece suporte para sala de estar/chat. A implementação técnica da sala de estar/chat não é difícil, mas os requisitos do produto, os requisitos dos atributos de qualidade e as condições restritivas são bastante diferentes dos cenários de aplicações sociais gerais, pelo que a primeira versão do Turms não fornece suporte para isso. Além disso, o Turms também não é adequado para cenários de comunicação empresarial de pequena escala. Usar o Turms para cenários de comunicação empresarial é usar uma marreta para quebrar uma noz, porque a comunicação empresarial enfatiza a riqueza de recursos em vez do desempenho extremo, o que é inconsistente com os objetivos do Turms, portanto, seus designs também são diferentes. Se você deseja oferecer suporte a cenários de comunicação empresarial, você mesmo precisa desenvolver com base no Turms.
Sistema observável (consulte Observabilidade para obter detalhes)
Log (para eventos): Turms fornece três tipos de logs: log de monitoramento, log de negócios e log de estatísticas
Métricas (para dados agregáveis). Ele reflete o status em tempo real do sistema e dos dados de negócios
Rastreamento
Observe que o servidor Turms fornecerá mais recursos de monitoramento que podem ser implementados com a maior eficiência possível, mas não fornecerá alguns recursos comuns que têm um grande impacto no desempenho e são mais adequados para serviços de terceiros fornecerem (como DAU) . Para este tipo de recurso estendido, você pode implementá-los por meio de análise offline ou em tempo real dos logs ou métricas dos servidores Turms.
Desempenho extremo Procuramos sempre arquivar desempenho extremo na implementação de todos os fluxos de trabalho do negócio. Consulte o código-fonte para obter detalhes.
Nome | Resumo |
---|---|
gateway de turms | Um gateway (servidor push) interagindo com clientes e responsável pela autenticação do usuário, gerenciamento de sessão, notificação push e balanceamento de carga para servidores de serviços turísticos |
serviço de turismo | Implementa lógica de negócios de mensagens instantâneas e fornece aos administradores gerenciamento de dados de negócios, RBAC e gerenciamento de cluster |
administrador do turm | Fornece recursos como gerenciamento de dados de negócios e gerenciamento de cluster para cluster de servidores Turms |
turms-client-js | Expõe APIs para interagir com o servidor Turms para implementar recursos de IM, lógica de driver subjacente (como pulsação) e compartilhamento da conexão WebSocket entre guias. Você não precisa conhecer suas implementações porque é transparente para os desenvolvedores |
transforma-cliente-kotlin | Expõe APIs para interagir com o servidor Turms para implementar recursos de IM e lógica de driver subjacente (como pulsação). Você não precisa conhecer suas implementações porque é transparente para os desenvolvedores |
transforma-cliente-rápido | idem |
vira-cliente-dardo | idem |
plugin turms | Quando eventos (como usuário online/offline, recebimento e encaminhamento de mensagens, etc.) são acionados, turms-gateway e turms-service acionarão plug-ins personalizados correspondentes para facilitar aos desenvolvedores a implementação de recursos personalizados |
turms-plugin-antispam | Um plugin baseado em turms-plugin para proteção anti-spam usando o autômato Aho-Corasick com teste de array duplo (a complexidade de tempo de detecção é O(n) e n é o comprimento dos pontos de código da string de destino) |
turms-plugin-minio | Um plugin baseado em turms-plugin para o serviço de armazenamento e é usado para interagir com o servidor MinIO |
turms-plugin-rasa | Um plugin baseado no turms-plugin para o chatbot e é usado para interagir com o servidor Rasa |
dados de turms (TODO) | Ainda não publicado. Um sistema independente de análise de dados baseado no ecossistema Flink é responsável pela análise de dados de negócios e fornece suporte de dados subjacente para as APIs de estatísticas de turms para administradores e relatórios operacionais de turms-admin |
O design da arquitetura do Turms é derivado de arquiteturas comerciais de mensagens instantâneas. A figura a seguir mostra a arquitetura de referência do Turms. Os serviços enquadrados por linhas pontilhadas são serviços opcionais, enquanto os serviços enquadrados por linhas sólidas são serviços obrigatórios. Consulte o Turms Architecture Design para obter detalhes.
Embora existam muitos projetos de IM de código aberto no mundo, há apenas um projeto de IM de código aberto projetado para cenários de aplicação de IM de médio e grande porte: Turms.
Foguete.Chat | Nuvem de mensagens instantâneas de código fechado | Turmas | |
---|---|---|---|
Cenários de aplicação | Comunicações da equipe | Cenários gerais de mensagens instantâneas | Cenários gerais de mensagens instantâneas de média a grande escala (tornando o redesenvolvimento do Turms possível) (Nota: A primeira versão do Turms não oferece suporte para sala de estar/chat) |
Vantagens | 1. Forneça serviços em nuvem apenas clicando com o mouse para iniciar o cluster e fornecer serviços 2. A implementação do cliente é multiplataforma e pronta para uso para os usuários 3. Apoie um conjunto de UI completo e unificado 4. Suporta recursos avançados de mensagens instantâneas, como conferência de áudio e vídeo, compartilhamento de arquivos, compartilhamento de tela 5. Fornecer suporte técnico aos usuários comerciais | 1. Forneça serviços em nuvem apenas clicando com o mouse para iniciar o cluster e fornecer serviços 2. A implementação do cliente é multiplataforma e pronta para uso para os usuários 3. Apoie um conjunto de UI completo e unificado 4. Suporta recursos avançados de mensagens instantâneas, como conferência de áudio e vídeo, compartilhamento de arquivos, compartilhamento de tela 5. Fornecer suporte técnico aos usuários comerciais | As vantagens são os recursos descritos acima |
Desvantagens | 1. Adequado apenas para aplicações de pequena escala 2. Cenários de aplicação restritos e difíceis de personalizar | 1. É de código fechado e não pode ser personalizado. Qualquer projeto terá inevitavelmente novos requisitos de negócio após o crescimento do negócio, que precisam ser customizados. No entanto, as nuvens de mensagens instantâneas não fornecem serviços personalizados ou exigem altas taxas de personalização, e podem interpretar mal seus requisitos, resultando em recursos personalizados que não atendem bem às suas necessidades de negócios. Será necessária uma cooperação de longo prazo para funcionar bem com eles. Mas com base no Turms, seus requisitos podem ser implementados e atendidos rapidamente e o custo é baixo. Nota: Para obter detalhes sobre a complexidade do IM, você pode consultar Schema Design 2. Privacidade de dados. Todas as informações do usuário e dados de mensagens são armazenados em nuvens de mensagens instantâneas, que podem espiar e usar seus dados. Especialmente para algumas pequenas empresas de mensagens instantâneas, a segurança dos dados não é garantida e você ainda precisa arcar com o risco de perda irrecuperável de dados. 3. Quanto mais você usa nuvens de mensagens instantâneas, quanto mais você confia nelas, mais caro ela é. A maioria das nuvens de mensagens instantâneas oferece uma certa cota gratuita ou período de teste, mas depois que a escala de usuários do seu produto crescer, você precisará pagar uma alta taxa de uso ou desistir do uso para começar a desenvolver seu próprio servidor de mensagens instantâneas. 4. O suporte técnico não é oportuno. As nuvens de mensagens instantâneas precisam fornecer suporte técnico para muitos clientes ao mesmo tempo, e o suporte para o seu produto pode ficar para trás | 1. Atende apenas às necessidades gerais de mensagens instantâneas e não fornece alguns recursos avançados (por exemplo, sem suporte para conferências de áudio e vídeo) 2. A primeira versão do Turms não suporta sala de estar/chat 3. O servidor Turms fornece apenas dados brutos de métricas/logs e não fornece funções como análises e alarmes 4. O turms-admin de administração do sistema baseado na web não fornece recursos de operação avançados atualmente5. Sem suporte para lógica de negócios e UI específicas 6. Os servidores são reativos, o que é um desafio para alguns desenvolvedores |
Comentário | É altamente recomendado usar Rocket.Chat para comunicações de equipe | Se os cenários de negócios de mensagens instantâneas em seu produto forem muito comuns e não houver requisitos personalizados, e o negócio de mensagens instantâneas não for o negócio principal do seu produto, é recomendável usar nuvens de mensagens instantâneas. Mas se não houver requisitos especiais, tente não usar a nuvem de mensagens instantâneas fornecida por pequenas empresas, caso contrário a segurança dos seus dados não será garantida | Embora ambos sejam projetos de IM de código aberto, eles têm cenários de aplicação completamente diferentes. Turms é um mecanismo geral de mensagens instantâneas para aplicativos de mensagens instantâneas de médio a grande porte. Você não pode simplesmente entregar Turms aos seus clientes (assim como a maioria dos produtos não permite que os clientes escrevam instruções SQL para consultar dados comerciais no banco de dados). No entanto, com base no Turms, você pode implementar todos os projetos de mensagens instantâneas de código aberto no GitHub de forma mais eficiente, abrangente e extensiva. |
Considerando o posicionamento da Turms, não planejamos fornecer uma demonstração do cliente com UI e lógica de negócios específica em um futuro próximo porque.
É fácil para os desenvolvedores verificarem os recursos de negócios suportados pelo Turms. Se quiser apenas testar os recursos de negócios do Turms, você pode executar o servidor Turms sem sequer digitar uma linha de código. Apenas dez linhas de código podem realizar o login, enviar mensagens, enviar solicitações de amigos e outros recursos de negócios, ou modificar propriedades para personalizar diversos requisitos.
O design e a implementação da demonstração estão intimamente relacionados aos cenários de negócios específicos, linguagem de programação específica, arquitetura técnica específica e sistema operacional específico, enquanto a Turms está comprometida em atender com eficiência vários cenários complexos e desafiadores de mensagens instantâneas, e não queremos publique uma demonstração que limite a imaginação dos desenvolvedores. E desenvolver e manter uma demonstração também consome muito tempo e retardará o progresso do desenvolvimento do Turms.
Atualmente, você só precisa “conversar” com GPT-3.5 e GPT-4 para obter soluções técnicas personalizadas e design de UI. Tome o texto como um exemplo de entrada (além disso, o GPT-4 suporta entrada de imagem e você também pode desenhar wireframes de IU para sugerir como deseja projetar a IU).
Implemente uma janela de bate-papo de atendimento ao cliente em execução na web com base em Vue3, Vite, Eslint e outras tecnologias. Requisitos específicos.
- O estilo de design da UI precisa se referir a: Ant Design
- A janela de chat deverá ser dividida em três partes: na parte superior deverá ser exibido o nome do atendimento; no meio, deverá ser exibida a mensagem do chat entre o usuário e o atendimento; e na parte inferior, uma caixa de entrada de texto e um botão enviar devem ser fornecidos para permitir ao usuário inserir texto e enviar mensagens.
- A janela de bate-papo deve sempre ser exibida no canto superior direito da página
- Você precisa assumir que a janela de bate-papo é baseada no protocolo WebSocket para se comunicar com o servidor backend para fazer login, enviar mensagens, receber mensagens, etc.
- Você precisa fornecer a estrutura do projeto e toda a implementação de código específico no projeto com base na solução de design de componentes de UI
A GPT pode fornecer a implementação de código correspondente imediatamente, e você pode continuar "conversando" com ela com base em vários cenários (você pode deixar a GPT fornecer e comparar vários cenários) para refinar seu design de UI e implementação de código para fechar a implementação final à sua ideia.
O projeto Turms é licenciado sob a licença Apache License 2.0
, portanto, não nos importamos se os usuários planejam lucrar com o projeto Turms. Exigimos apenas que os usuários cumpram a licença Apache License 2.0
em seus trabalhos, como documentos, vídeos, códigos, etc., para citar as informações do projeto Turms, como:
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
Como o projeto Turms é lucrativo?
Não precisamos ser lucrativos atualmente. É claro que não excluímos o lucro, mas não iremos deliberadamente escrever documentos ruins ou fazer um trabalho ruim para ganhar consultoria, treinamento e outras despesas. Outra coisa a mencionar é que existem de fato muitos projetos de código aberto (fechados) que ganham taxas de suporte de serviço escrevendo deliberadamente documentos ruins e fazendo um trabalho ruim.
Se organizações com fins lucrativos, como instituições de formação ou empresas, citarem documentos da Turms, ou mesmo venderem projetos da Turms como serviços SaaS, essas organizações com fins lucrativos precisam prestar atenção a alguma coisa?
Não nos importamos se sua equipe planeja lucrar com o projeto Turms. Sua equipe só precisa cumprir a licença Apache License 2.0
e mencionar as informações do projeto Turms conforme mencionado acima.
O projeto Turms é adequado para fazer serviços SaaS, então por que o projeto Turms não adota a licença AGPL ou SSPL?
Atualmente não precisamos ter lucro e não planejamos ter lucro. Exigimos apenas que os usuários cumpram a licença Apache License 2.0
.
Se o projeto Turms não é rentável, qual é a qualidade do seu projeto?
Nossa documentação e código-fonte responderam a essa pergunta para nós e, na comunidade de código aberto, não existe nenhum projeto de IM de código aberto que possa competir com o projeto Turms em cenários de aplicativos de IM de médio e grande porte. Outra coisa a mencionar é que projetos comerciais não significam alta qualidade, e até mesmo a qualidade da documentação e do código de muitos projetos comerciais é chocante.
A Turms usa contratos de licença dupla ou tem cobranças ocultas?
Não. Alguns projetos são gratuitos para uso pessoal e cobram pelo uso comercial, usando acordos de licenciamento duplo, ou têm muitas cobranças ocultas. O projeto Turms é licenciado sob a licença Apache License 2.0
e não há cobrança. Alguns projetos afirmam ser software de código aberto, mas não são. Para obter detalhes, consulte A definição de código aberto.
Desenvolvido principalmente em IntelliJ IDEA e CLion.
Licença gentilmente fornecida pela equipe de suporte da comunidade JetBrains.