简体中文
Turms是全球最先进的开源即时通讯引擎,支持100K~10M并发用户。详细信息请参阅 Turms 文档。
(演示服务器版本: ghcr.io/turms-im/turms-admin:latest
、 ghcr.io/turms-im/turms-gateway:latest
、 ghcr.io/turms-im/turms-service:latest
)
turms 管理员:http://playground.turms.im:6510
帐号和密码均为: guest
。 (该账号可以查询和添加数据,但不允许更新和删除数据。)
turms-gateway:http://playground.turms.im:10510(WebSocket 访问端口)和 http://playground.turms.im:11510(TCP 访问端口)
turms-service(开发环境中的管理 API,支持虚假数据):http://playground.turms.im:8510
普罗米修斯:http://playground.turms.im:9090;格拉法纳:http://playground.turms.im:3000
您可以使用任何 turms-client-(java/js/swift) 实现向 turms-gateway 发送请求并与其他用户交互。
此外,Playground 只需一个命令即可自动设置: ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
运行以下命令自动设置最小可行集群(包括 turms-gateway、turms-service 和 turms-admin)及其依赖服务器(MongoDB 分片集群和 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
集群搭建完成后,可以访问turms-admin(http://localhost:6510),输入账号和密码(默认为turms
)。如果登录成功,则说明Turms集群已经搭建成功。
您还可以应用Tums提供的Terraform模块快速购买云服务并搭建turms集群(默认使用现货实例)。运行terraform apply
后,等待约 3~15 分钟(阿里云 ECS 拉取 ghcr 镜像较慢),然后访问http://<public IP>:6510
,如果可以访问 turms-admin 则说明turms集群已经搭建成功。
(注:以下命令会自动购买云服务并从您的账户中扣除相应费用)
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
Turms的架构依赖于创建收件箱(或消息时间轴)的扇出读设计,Tums支持推送模型、拉取模型、推拉模型来感知业务数据的变化(详情参见业务数据变化感知) )。大多数其他设计细节也来自商业 IM 项目。
并且相比很多技术栈过时的项目,Tums也是唯一一个基于现代架构和现代技术、适合中大型应用的开源IM解决方案。
另外,架构设计是一门权衡的艺术。有些IM产品以丰富的功能为口号,但代价是不支持中大型应用(只适合团队通信)。然而,Tums以极致性能为第一,支持完整(而不是丰富)的IM功能来支持中大型应用。详细信息请参阅 Turms 架构设计和可观测性。
当您需要将 Turms 与其他开源 IM 项目进行功能比较时,您可以首先根据 Turms 的以下功能将 Turms 与其他开源 IM 项目进行比较。通常,您可以发现专业 IM 项目和业余 IM 项目之间的差异。另外,在Product Comparison
章节下,我们也提到了Tums项目的不足之处,供大家参考。
注意:当前 Turms 项目的主要缺点是它不提供对客厅/聊天室的支持。客厅/聊天室的技术实现并不困难,但其产品要求、质量属性要求、限制条件与一般社交应用的场景有较大差异,因此Turms第一个版本并没有提供对其的支持。另外,Tums也不太适合小型企业通信场景。将Turms用于企业通信场景就是拿大锤砸烂坚果,因为企业通信强调的是功能丰富而不是极致性能,这与Tums的目标不符,所以他们的设计也不同。如果要支持企业通信场景,就需要自己基于Tums进行开发。
可观察系统(详情请参阅可观察性)
日志(针对事件):Turms提供三种类型的日志:监控日志、业务日志、统计日志
指标(用于可聚合数据)。反映系统实时状态和业务数据
追踪
注意,Tums服务器会提供更多可以高效实现的监控功能,但不会提供一些对性能影响较大、更适合第三方服务提供的常用功能(如DAU) 。对于这种扩展功能,您可以通过离线或实时分析 Turms 服务器的日志或指标来实现。
极致性能 我们始终努力在所有业务工作流程的实施中实现极致性能。详细请参考源码。
姓名 | 概括 |
---|---|
turms网关 | 与客户端交互的网关(推送服务器),负责用户身份验证、会话管理、推送通知和 turms-service 服务器的负载平衡 |
涡轮服务 | 实现IM业务逻辑,为管理员提供业务数据管理、RBAC、集群管理 |
turms管理 | 提供Tums服务器集群的业务数据管理、集群管理等功能 |
turms-客户端-js | 公开 API 与 Turms 服务器交互,以实现 IM 功能、底层驱动程序逻辑(例如心跳)以及在选项卡之间共享 WebSocket 连接。您不需要了解它的实现,因为它对开发人员来说是透明的 |
转客户端 kotlin | 公开 API 与 Turms 服务器交互,以实现 IM 功能和底层驱动程序逻辑(例如心跳)。您不需要了解它的实现,因为它对开发人员来说是透明的 |
转客户端-swift | 同上 |
转客户端 dart | 同上 |
turms 插件 | 当事件(如用户上下线、消息接收转发等)触发时,turms-gateway和turms-service会触发相应的自定义插件,方便开发者实现自定义功能 |
turms-插件-反垃圾邮件 | 一个基于 turms-plugin 的插件,用于使用具有双数组 trie 的 Aho-Corasick 自动机进行反垃圾邮件保护(检测时间复杂度为 O(n),n 为目标字符串代码点的长度) |
turms-插件-minio | 基于turms-plugin的存储服务插件,用于与MinIO服务器交互 |
turms 插件 rasa | 一个基于 turms-plugin 的聊天机器人插件,用于与 Rasa 服务器交互 |
turms 数据 (TODO) | 尚未发布。基于Flink生态的独立数据分析系统负责业务数据分析,为turms for admins的统计API和turms-admin的运营报告提供底层数据支持 |
Turms的架构设计源自商业即时通讯架构。下图展示了Tums的参考架构。虚线框出的服务是可选服务,而实线框出的服务是必需服务。详细请参考Tums架构设计。
虽然全球有很多开源 IM 项目,但针对中大型 IM 应用场景设计的开源 IM 项目只有一个:Tums。
火箭聊天 | 闭源IM云 | 特鲁姆斯 | |
---|---|---|---|
应用场景 | 团队沟通 | 通用 IM 场景 | 一般中大型IM场景(让Turms可以二次开发) (注:Tums的第一个版本不提供客厅/聊天室的支持) |
优点 | 1、提供云服务 只需点击鼠标即可启动集群并提供服务 2. 客户端实现是跨平台的并且对用户来说是开箱即用的 3. 支持完整统一的UI套件 4.支持丰富的高级即时通讯功能,如音视频会议、文件共享、屏幕共享 5.为商业用户提供技术支持 | 1、提供云服务 只需点击鼠标即可启动集群并提供服务 2. 客户端实现是跨平台的并且对用户来说是开箱即用的 3. 支持完整统一的UI套件 4.支持丰富的高级即时通讯功能,如音视频会议、文件共享、屏幕共享 5.为商业用户提供技术支持 | 优点就是上面描述的特点 |
缺点 | 1. 只适合小规模应用 2、应用场景狭窄,定制难度大 | 1.闭源,无法定制。任何项目在业务增长之后,都不可避免地会有新的业务需求,需要进行定制化。但IM云要么不提供定制服务,要么需要高昂的定制费用,可能会误解您的需求,导致定制的功能不能很好地满足您的业务需求。与他们的合作需要长期的合作。 但基于Tums,你的需求可以快速实现和提供,而且成本较低。 注:IM的复杂度细节可以参考Schema Design 2. 数据隐私。您所有的用户信息和消息数据都存储在IM云上,IM云可以窥视和使用您的数据。 尤其是对于一些小型IM公司来说,数据安全根本得不到保障,甚至需要承担数据丢失且无法恢复的风险。 3、使用IM云越多,依赖越多,费用也越高。大多数IM云都会提供一定的免费额度或试用期,但当你的产品用户规模增长后,你需要支付高昂的使用费或放弃使用,开始开发自己的IM服务器 4、技术支持不及时。 IM云需要同时为很多客户提供技术支持,对您的产品的支持可能会滞后 | 1.仅满足一般即时通讯需求,不提供一些高级功能(例如不支持音视频会议) 2. Turms第一版不支持客厅/聊天室 3. Turms服务器仅提供metrics/log的原始数据,不提供分析、报警等功能 4.基于Web的系统管理 turms-admin 目前不提供高级操作功能5.不支持特定的业务逻辑和UI 6. 服务器是反应性的,这对一些开发人员来说是一个挑战 |
评论 | 强烈推荐使用Rocket.Chat进行团队沟通 | 如果您的产品中的IM业务场景很常见,并且没有自定义需求,并且IM业务不是您产品的主要业务,建议使用IM云。 但如果没有特殊要求,尽量不要使用小公司提供的IM云,否则你的数据安全将得不到保障 | 虽然都是开源的IM项目,但是它们的应用场景却完全不同。 Turms 是一个通用的即时消息引擎,适用于大中型即时消息应用程序。你不能把 Turms 直接交给客户(就像大多数产品不允许客户编写 SQL 语句来查询数据库中的业务数据一样)。 但基于Tums,你可以更高效、更全面、更广泛地实现GitHub上的所有开源即时通讯项目 |
考虑到 Turms 的定位,我们近期不打算提供带有 UI 和具体业务逻辑的客户端 demo,因为。
开发者可以轻松验证Tums支持的业务功能。如果您只是想测试 Turms 的业务功能,您甚至无需键入一行代码即可运行 Turms 服务器。只需十行代码就可以实现登录、发送消息、发送好友请求等业务功能,或者修改属性定制各种需求。
Demo的设计和实现与具体的业务场景、具体的编程语言、具体的技术架构、具体的操作系统密切相关,而Tums一直致力于高效满足各种复杂且具有挑战性的即时通讯场景,我们不想发布一个限制开发者想象力的演示。而且开发和维护一个demo也非常耗时,会减慢Tums的开发进度。
目前,您只需要与GPT-3.5和GPT-4“聊天”即可实现定制技术方案和UI设计。以文本作为输入示例(另外,GPT-4支持图像输入,你还可以绘制UI线框来建议它想要如何设计UI)。
请基于Vue3、Vite、Eslint等技术实现一个运行在Web端的客服聊天窗口。具体要求。
- UI设计风格需要参考:Ant Design
- 聊天窗口应该分为三个部分:顶部,应显示客户服务名称;中间应该显示用户和客服之间的聊天消息;底部应提供文本输入框和发送按钮,以允许用户输入文本和发送消息。
- 聊天窗口应始终显示在页面的右上角
- 需要假设聊天窗口是基于WebSocket协议与后端服务器通信进行登录、发送消息、接收消息等。
- 您需要给出基于UI组件化设计方案的项目结构以及项目中所有具体的代码实现
GPT可以立即提供相应的代码实现,你可以根据各种场景(你可以让GPT提供并比较多个场景)不断地与它“聊天”,以完善其UI设计和代码实现,使最终的实现接近按照你的想法。
Turms 项目是在Apache License 2.0
许可下获得许可的,因此我们不关心用户是否打算从 Turms 项目中获利。我们仅要求用户在您的作品(例如文档、视频、代码等)中遵守Apache License 2.0
许可,提及 Turms 项目的信息,例如:
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
Turms项目如何盈利?
我们目前不需要盈利。当然,我们不排除盈利,但我们不会为了赚取咨询、培训等费用而刻意写不好的文档或者做不好的工作。另外值得一提的是,确实有很多(封闭的)开源项目通过故意写坏文档、做不好工作来赚取服务支持费。
如果营利机构,比如培训机构或者公司,引用Turms的文档,甚至将Turms项目作为SaaS服务出售,这些营利机构需要注意什么吗?
我们不关心你的团队是否计划从 Turms 项目中获利。您的团队只需遵守Apache License 2.0
许可证并提及上述 Turms 项目信息即可。
Turms项目适合做SaaS服务,那么为什么Tums项目不采用AGPL或SSPL许可呢?
我们目前不需要盈利,也不打算盈利。我们只要求用户遵守Apache License 2.0
许可证。
如果Tums项目不盈利,那么它的项目质量如何?
我们的文档和源码已经为我们解答了这个问题,并且在开源社区中,还没有一个开源IM项目可以在中大型IM应用场景中与Tums项目竞争。另外要提的是,商业项目并不意味着高质量,甚至很多商业项目的文档和代码质量都令人震惊。
Turms 是否使用双重许可协议或有隐藏费用?
不会。有些项目对个人使用免费,对商业使用收费,使用双重许可协议,或者有很多隐藏费用。 Turms 项目根据Apache License 2.0
许可证获得许可,并且不收取任何费用。有些项目声称是开源软件,但事实并非如此。详细信息请参阅开源定义。
主要在IntelliJ IDEA和CLion中开发。
许可证由 JetBrains 社区支持团队友情提供。