简体中文
Turms est le moteur de messagerie instantanée open source le plus avancé pour 100 000 à 10 millions d'utilisateurs simultanés dans le monde. Veuillez vous référer à la documentation Turms pour plus de détails.
(Version des serveurs de démonstration : ghcr.io/turms-im/turms-admin:latest
, ghcr.io/turms-im/turms-gateway:latest
, ghcr.io/turms-im/turms-service:latest
)
admin-turms : http://playground.turms.im:6510
Le compte et le mot de passe sont : guest
. (Le compte est autorisé à interroger et à ajouter des données, mais n'est pas autorisé à mettre à jour et à supprimer des données.)
turms-gateway : http://playground.turms.im:10510 (port pour l'accès WebSocket) et http://playground.turms.im:11510 (port pour l'accès TCP)
turms-service (API Admin dans un environnement de développement avec de fausses données prises en charge) : http://playground.turms.im:8510
Prométhée : http://playground.turms.im:9090 ; Grafana : http://playground.turms.im:3000
Vous pouvez utiliser n'importe quelle implémentation de turms-client-(java/js/swift) pour envoyer des requêtes à turms-gateway et interagir avec d'autres utilisateurs.
De plus, Playground est configuré automatiquement par une seule commande : ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
Exécuter les commandes suivantes pour configurer automatiquement un cluster minimum viable (y compris turms-gateway, turms-service et turms-admin) et ses serveurs dépendants (cluster fragmenté MongoDB et Redis) :
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
Une fois le cluster configuré, vous pouvez visiter turms-admin à l'adresse http://localhost:6510 et saisir le compte et le mot de passe ( turms
par défaut). Si vous vous connectez avec succès, cela signifie que le cluster de Turms a été configuré avec succès.
Vous pouvez également appliquer les modules Terraform fournis par Turms pour acheter rapidement des services cloud et configurer un cluster Turms (utilise des instances ponctuelles par défaut). Après avoir exécuté terraform apply
, attendez environ 3 à 15 minutes (Alibaba Cloud ECS est lent à extraire les images ghcr), puis visitez http://<public IP>:6510
, si vous pouvez accéder à turms-admin, cela signifie que le Le cluster Turms a été configuré avec succès.
(Remarque : les commandes suivantes achèteront automatiquement les services cloud et déduiront les frais correspondants de votre compte)
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
L'architecture de Turms dépend de la conception de lecture de diffusion pour créer des boîtes de réception (ou des chronologies de messages), et Turms prend en charge le modèle push, le modèle pull et le modèle push-pull pour être conscient des modifications des données commerciales (Pour plus de détails, Business Data Change Awareness ). La plupart des autres détails de conception proviennent également de projets de messagerie instantanée commerciaux.
Et comparé à de nombreux projets dotés de piles technologiques obsolètes, Turms est également la seule solution de messagerie instantanée open source basée sur une architecture et une technologie modernes et adaptée aux applications à moyenne et grande échelle.
De plus, la conception architecturale est un art de compromis. Certains produits de messagerie instantanée ont pour slogan des fonctionnalités riches au prix de l'absence de support pour les applications à moyenne et grande échelle (ils ne conviennent que pour les communications d'équipe). Cependant, Turms considère les performances extrêmes comme première priorité et prend en charge des fonctionnalités de messagerie instantanée complètes (plutôt que riches) pour prendre en charge les applications à moyenne et grande échelle. Veuillez vous référer à la conception et à l'observabilité du schéma Turms pour plus de détails.
Lorsque vous devez comparer Turms avec d'autres projets de messagerie instantanée open source pour les fonctionnalités, vous pouvez d'abord comparer Turms avec d'autres projets de messagerie instantanée open source basés sur les fonctionnalités suivantes de Turms. Habituellement, vous pouvez trouver les différences entre les projets de messagerie instantanée professionnels et les projets de messagerie instantanée amateurs. De plus, dans le chapitre Product Comparison
, nous avons également mentionné les lacunes du projet Turms pour votre référence.
Remarque : Le principal inconvénient du projet Turms actuel est qu'il ne prend pas en charge le salon/salle de discussion. La mise en œuvre technique du salon/salle de discussion n'est pas difficile, mais les exigences du produit, les exigences des attributs de qualité et les conditions restrictives sont assez différentes des scénarios d'applications sociales générales, de sorte que la première version de Turms n'en fournit pas de support. De plus, Turms n’est pas non plus adapté aux scénarios de communication d’entreprise à petite échelle. Utiliser Turms pour des scénarios de communication d'entreprise, c'est utiliser un marteau pour casser une noix, car la communication d'entreprise met l'accent sur des fonctionnalités riches plutôt que sur des performances extrêmes, ce qui est incompatible avec les objectifs de Turms, de sorte que leurs conceptions sont également différentes. Si vous souhaitez prendre en charge des scénarios de communication d'entreprise, vous devez vous-même développer sur la base de Turms.
Système observable (Veuillez vous référer à Observabilité pour plus de détails)
Journal (pour les événements) : Turms fournit trois types de journaux : journal de surveillance, journal d'activité et journal de statistiques.
Métriques (pour les données agrégées). Il reflète l'état en temps réel du système et des données commerciales
Tracé
Notez que le serveur Turms fournira davantage de fonctionnalités de surveillance qui peuvent être mises en œuvre efficacement autant que possible, mais ne fournira pas certaines fonctionnalités communes qui ont un grand impact sur les performances et sont plus adaptées aux services tiers (tels que DAU). . Pour ce type de fonctionnalités étendues, vous pouvez les implémenter par analyse hors ligne ou en temps réel des journaux ou des métriques des serveurs Turms.
Performances extrêmes Nous essayons toujours d'archiver des performances extrêmes dans la mise en œuvre de tous les flux de travail commerciaux. Veuillez vous référer au code source pour plus de détails.
Nom | Résumé |
---|---|
tour-passerelle | Une passerelle (serveur push) interagissant avec les clients et responsable de l'authentification des utilisateurs, de la gestion des sessions, des notifications push et de l'équilibrage de charge pour les serveurs de service Turms |
service-tours | Implémente la logique métier de la messagerie instantanée et fournit aux administrateurs la gestion des données d'entreprise, le RBAC et la gestion des clusters. |
Turms-admin | Fournit des fonctionnalités telles que la gestion des données d'entreprise et la gestion de cluster pour le cluster de serveurs Turms |
turms-client-js | Expose les API pour interagir avec le serveur Turms afin d'implémenter les fonctionnalités de messagerie instantanée, la logique du pilote sous-jacente (telle que le battement de cœur) et le partage de la connexion WebSocket entre les onglets. Vous n'avez pas besoin de connaître ses implémentations car c'est transparent pour les développeurs |
devient client-kotlin | Expose les API pour interagir avec le serveur Turms afin d'implémenter les fonctionnalités de messagerie instantanée et la logique du pilote sous-jacente (telle que le battement de cœur). Vous n'avez pas besoin de connaître ses implémentations car c'est transparent pour les développeurs |
devient client-rapide | idem |
tourne-client-dart | idem |
plugin-turms | Lorsque des événements (tels que la mise en ligne/hors ligne d'un utilisateur, la réception et le transfert de messages, etc.) sont déclenchés, turms-gateway et turms-service déclencheront les plugins personnalisés correspondants pour permettre aux développeurs d'implémenter des fonctionnalités personnalisées. |
Turms-plugin-antispam | Un plugin basé sur turms-plugin pour la protection anti-spam utilisant l'automate Aho-Corasick avec un double tableau (la complexité temporelle de la détection est O(n), et n est la longueur des points de code de la chaîne cible) |
Turms-plugin-minio | Un plugin basé sur turms-plugin pour le service de stockage, et est utilisé pour interagir avec le serveur MinIO |
Turms-plugin-rasa | Un plugin basé sur turms-plugin pour le chatbot, et est utilisé pour interagir avec le serveur Rasa |
données-tours (TODO) | Pas encore publié. Un système d'analyse de données indépendant basé sur l'écosystème Flink est responsable de l'analyse des données commerciales et fournit un support de données sous-jacent pour les API statistiques de Turms pour les administrateurs et les rapports opérationnels de Turms-admin. |
La conception architecturale de Turms est dérivée des architectures de messagerie instantanée commerciales. La figure suivante montre l'architecture de référence de Turms. Les services encadrés par des lignes pointillées sont des services optionnels, tandis que les services encadrés par des lignes pleines sont des services obligatoires. Veuillez vous référer à Turms Architecture Design pour plus de détails.
Bien qu'il existe de nombreux projets de messagerie instantanée open source dans le monde, il n'existe qu'un seul projet de messagerie instantanée open source conçu pour les scénarios d'application de messagerie instantanée de moyenne et grande taille : Turms.
Rocket.Chat | Cloud de messagerie instantanée à source fermée | Turms | |
---|---|---|---|
Scénarios d'application | Communication d'équipe | Scénarios généraux de messagerie instantanée | Scénarios généraux de GI à moyenne et grande échelle (Rendre Turms possible pour le réaménagement) (Remarque : la première version de Turms ne prend pas en charge le salon/salle de discussion) |
Avantages | 1. Fournissez des services cloud en cliquant simplement sur la souris pour démarrer le cluster et fournir des services 2. L'implémentation du client est multiplateforme et prête à l'emploi pour les utilisateurs 3. Prend en charge une suite d'interface utilisateur complète et unifiée 4. Prend en charge de riches fonctionnalités avancées de messagerie instantanée, telles que les conférences audio et vidéo, le partage de fichiers, le partage d'écran. 5. Fournir aux utilisateurs commerciaux une assistance technique | 1. Fournissez des services cloud en cliquant simplement sur la souris pour démarrer le cluster et fournir des services 2. L'implémentation du client est multiplateforme et prête à l'emploi pour les utilisateurs 3. Prend en charge une suite d'interface utilisateur complète et unifiée 4. Prend en charge de riches fonctionnalités avancées de messagerie instantanée, telles que les conférences audio et vidéo, le partage de fichiers, le partage d'écran. 5. Fournir aux utilisateurs commerciaux une assistance technique | Les avantages sont les fonctionnalités décrites ci-dessus |
Inconvénients | 1. Convient uniquement aux applications à petite échelle 2. Scénarios d’application étroits et difficiles à personnaliser | 1. Il est fermé et ne peut pas être personnalisé. Tout projet aura inévitablement de nouvelles exigences commerciales après la croissance de l'entreprise, qui doivent être personnalisées. Cependant, les nuages de messagerie instantanée ne fournissent pas de services personnalisés ou nécessitent des frais de personnalisation élevés, et ils peuvent mal comprendre vos besoins, ce qui entraîne des fonctionnalités personnalisées qui ne peuvent pas répondre correctement aux besoins de votre entreprise. Il faudra une coopération à long terme pour bien travailler avec eux. Mais grâce à Turms, vos besoins peuvent être mis en œuvre et satisfaits rapidement, et le coût est faible. Remarque : Pour plus de détails sur la complexité de la messagerie instantanée, vous pouvez vous référer à Schema Design 2. Confidentialité des données. Toutes vos informations utilisateur et données de messages sont stockées sur des nuages de messagerie instantanée, qui peuvent consulter et utiliser vos données. Surtout pour certaines petites sociétés de messagerie instantanée, la sécurité des données n'est pas du tout garantie et vous devez même supporter le risque de perte irrécupérable de données. 3. Plus vous utilisez les nuages de messagerie instantanée, plus vous y comptez, plus cela coûte cher. La plupart des nuages de messagerie instantanée offrent un certain quota gratuit ou une période d'essai, mais une fois que le nombre d'utilisateurs de votre produit a augmenté, vous devez payer des frais d'utilisation élevés ou abandonner l'utilisation pour commencer à développer votre propre serveur de messagerie instantanée. 4. Le support technique n'est pas opportun. Les nuages de messagerie instantanée doivent fournir une assistance technique à un grand nombre de clients en même temps, et la prise en charge de votre produit peut être à la traîne. | 1. Répond uniquement aux besoins généraux de messagerie instantanée et ne fournit pas certaines fonctionnalités avancées (par exemple, aucune prise en charge des conférences audio et vidéo) 2. La première version de Turms ne prend pas en charge les salons/salles de discussion 3. Le serveur Turms fournit uniquement des données brutes de métriques/journaux et ne fournit pas de fonctions telles que l'analyse et les alarmes. 4. L'administration système basée sur le Web turms-admin ne fournit actuellement pas de fonctionnalités de fonctionnement avancées.5. Aucune prise en charge d'une logique métier et d'une interface utilisateur spécifiques 6. Les serveurs sont réactifs, ce qui constitue un défi pour certains développeurs |
Commentaire | Il est fortement recommandé d'utiliser Rocket.Chat pour les communications d'équipe | Si les scénarios commerciaux de messagerie instantanée dans votre produit sont très courants, qu'il n'y a pas d'exigences personnalisées et que l'activité de messagerie instantanée n'est pas l'activité principale de votre produit, il est recommandé d'utiliser les nuages de messagerie instantanée. Mais s'il n'y a pas d'exigences particulières, essayez de ne pas utiliser le cloud de messagerie instantanée fourni par les petites entreprises, sinon la sécurité de vos données ne sera pas garantie. | Bien que les deux soient des projets de messagerie instantanée open source, ils ont des scénarios d'application complètement différents. Turms est un moteur de messagerie instantanée général destiné aux applications de messagerie instantanée de moyenne à grande échelle. Vous ne pouvez pas simplement confier Turms à vos clients (tout comme la plupart des produits ne permettent pas aux clients d'écrire des instructions SQL pour interroger les données commerciales dans la base de données). Cependant, sur la base de Turms, vous pouvez implémenter tous les projets de messagerie instantanée open source sur GitHub de manière plus efficace, complète et étendue. |
Compte tenu du positionnement de Turms, nous ne prévoyons pas de proposer une démo client avec une interface utilisateur et une logique métier spécifique dans un avenir proche car.
Il est facile pour les développeurs de vérifier les fonctionnalités métier prises en charge par Turms. Si vous souhaitez simplement tester les fonctionnalités métier de Turms, vous pouvez exécuter le serveur Turms sans même taper une ligne de code. Seules dix lignes de code peuvent réaliser la connexion, l'envoi de messages, l'envoi de demandes d'amis et d'autres fonctionnalités professionnelles, ou modifier les propriétés pour personnaliser diverses exigences.
La conception et la mise en œuvre de la démo sont étroitement liées aux scénarios commerciaux spécifiques, au langage de programmation spécifique, à l'architecture technique spécifique et au système d'exploitation spécifique, tandis que Turms s'est engagé à répondre efficacement à divers scénarios de messagerie instantanée complexes et difficiles, et nous ne voulons pas publier une démo qui limite l'imagination des développeurs. Et développer et maintenir une démo prend également beaucoup de temps et ralentira la progression du développement de Turms.
Actuellement, il vous suffit de « discuter » avec GPT-3.5 et GPT-4 pour réaliser des solutions techniques personnalisées et une conception d'interface utilisateur. Prenez le texte comme exemple de saisie (de plus, GPT-4 prend en charge la saisie d'images et vous pouvez également dessiner des wireframes d'interface utilisateur pour suggérer comment il souhaite concevoir l'interface utilisateur).
Veuillez implémenter une fenêtre de discussion du service client fonctionnant sur le Web et basée sur Vue3, Vite, Eslint et d'autres technologies. Exigences spécifiques.
- Le style de conception de l'interface utilisateur doit faire référence à : Ant Design
- La fenêtre de discussion doit être divisée en trois parties : en haut, le nom du service client doit être affiché ; au milieu, le message de chat entre l'utilisateur et le service client doit être affiché ; et en bas, une zone de saisie de texte et un bouton d'envoi doivent être fournis pour permettre à l'utilisateur de saisir du texte et d'envoyer des messages.
- La fenêtre de discussion doit toujours être affichée dans le coin supérieur droit de la page
- Vous devez supposer que la fenêtre de discussion est basée sur le protocole WebSocket pour communiquer avec le serveur backend pour vous connecter, envoyer des messages, recevoir des messages, etc.
- Vous devez donner la structure du projet et toute l'implémentation de code spécifique dans le projet sur la base de la solution de conception composée de composants de l'interface utilisateur.
GPT peut fournir immédiatement l'implémentation du code correspondante, et vous pouvez continuer à « discuter » avec lui sur la base de divers scénarios (vous pouvez laisser GPT fournir et comparer plusieurs scénarios) pour affiner la conception de son interface utilisateur et l'implémentation de son code afin de clôturer l'implémentation finale. à votre idée.
Le projet Turms est sous licence Apache License 2.0
, nous ne nous soucions donc pas de savoir si les utilisateurs envisagent de tirer des bénéfices du projet Turms. Nous demandons uniquement aux utilisateurs de respecter la licence Apache License 2.0
dans vos travaux, tels que les documents, vidéos, codes, etc., de mentionner les informations du projet Turms, telles que :
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
Quelle est la rentabilité du projet Turms ?
Nous n’avons pas besoin d’être rentables actuellement. Bien sûr, nous n'excluons pas le profit, mais nous n'écrirons pas délibérément de mauvais documents ou de faire un mauvais travail afin de gagner des frais de conseil, de formation et autres. Une autre chose à mentionner est qu'il existe effectivement de nombreux projets open source (fermés) qui gagnent des frais de support de service en écrivant délibérément de mauvais documents et en faisant un mauvais travail.
Si des organisations à but lucratif, telles que des établissements de formation ou des entreprises, citent les documents de Turms, ou même vendent des projets Turms en tant que services SaaS, ces organisations à but lucratif doivent-elles prêter attention à quoi que ce soit ?
Peu importe que votre équipe envisage de tirer profit du projet Turms. Votre équipe doit uniquement se conformer à la licence Apache License 2.0
et mentionner les informations du projet Turms comme mentionné ci-dessus.
Le projet Turms est adapté à la création de services SaaS, alors pourquoi le projet Turms n'adopte-t-il pas la licence AGPL ou SSPL ?
Nous n’avons actuellement pas besoin de réaliser de bénéfices et nous n’envisageons pas de réaliser des bénéfices. Nous demandons uniquement aux utilisateurs de se conformer à la licence Apache License 2.0
.
Si le projet Turms n’est pas rentable, quelle est la qualité de son projet ?
Notre documentation et notre code source ont répondu à cette question pour nous, et dans la communauté open source, il n'existe aucun projet de messagerie instantanée open source qui puisse rivaliser avec le projet Turms dans des scénarios d'application de messagerie instantanée de moyenne et grande taille. Une autre chose à mentionner est que les projets commerciaux ne sont pas synonymes de haute qualité, et même la qualité de la documentation et du code de nombreux projets commerciaux est choquante.
Turms utilise-t-il des accords de double licence ou a-t-il des frais cachés ?
Non. Certains projets sont gratuits pour un usage personnel et payants pour un usage commercial, en utilisant des accords de double licence, ou comportent de nombreux frais cachés. Le projet Turms est sous licence Apache License 2.0
et il n'y a aucun frais. Certains projets prétendent être des logiciels open source, mais ce n'est pas le cas. Pour plus de détails, veuillez vous référer à La définition Open Source.
Principalement développé dans IntelliJ IDEA et CLion.
Licence aimablement fournie par l'équipe d'assistance communautaire JetBrains.