大家好,又见面了,我是你们的朋友全栈君。
PHP网站在线客#服系统源代码是一套全球范围内最为先进的、为同时在线用户数为100K~10M应用而设计的开源即时通讯引擎。
(当前Demo的服务端版本:/turms-admin:latest、/turms-im/turms-gateway:latest、/turms-im/turms-service:latest)turms-admin服务端地址:/im:6510
登录账号与密码均为:guest(该账号有查询与增加领域模型的权限,无更新与删除领域模型的权限)
仓库源码:kf.zxkfym.top
turms-gateway服务端地址:/im:10510 (WebSocket端口)、/im:11510 (TCP端口)
turms-service服务端的管理员API地址(DEV配置,带Mock数据):/im:8510
Prometheus服务端地址:/im:9090;Grafana服务端:/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最小集群(包含turms-gateway、turms-service与turms-admin)及其依赖服务端(MongoDB分片集群与Redis)
代码语言:javascript复制 git clone --depth 1 /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
等集群完成搭建后,可以通过 localhost:6510 访问turms-admin后台管理系统,并输入账号密码(默认均为turms)。如果登录成功,则说明Turms服务端也已经成功启动。
另外您也可以通过Turms提供的Terraform module,来快
搭建云环境(默认使用抢占式实例)并在服务器上搭建Turms集群与依赖服务端。在terraform apply命令执行完毕后,等待约3~15分钟(阿里云ECS拉取ghcr镜像很慢)。
代码语言:javascript复制 git clone --depth 1 /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
基于读扩散消息模型进行架构设计,对业务数据变化感知同时支持推模式、拉模式与推拉模式(详细文档:客#服源码业务数据变化感知),其他大部分的设计细节也源自商用即时通讯项目。并且相比很多技术栈落后的开源项目或闭源商用项目,客#服源码解决方案也是全球即时通讯开源领域内唯一一个基于现代化架构与现代化工程技术,并且适合中大规模部署的解决方案。
另外,架构设计是权衡的艺术,部分IM产品以功能丰富为口号,但功能丰富的代价就是只适用于小体量的用户规模(如企业内部通讯)。而客#服源码以极限性能为第一要义,同时支持完整的(而非丰富的)IM业务功能,以支持中大规模即时通讯场景。具体原因可查阅客#服源码集合设计以及客#服源码可观测性体系相关文档。
当您需要将客#服源码与其他开源IM项目做具体特性的比对时,您可以先照着客#服源码下述的特性与其他开源IM项目进行比对。通常情况下,您能通过这样的比对,发现专业IM项目与业余IM项目之间的区别。另外,在产品对比章节下,我们也提到了客#服源码项目的缺点供您参考。
注意:当前客#服源码项目的主要缺点是不对直播/聊天室业务场景提供支持。直播/聊天室业务场景的技术实现并不难,但其产品需求、质量属性要求与约束性条件与一般的社交场景存在着较大差异,故客#服源码第一版设计不对其提供支持;另外,客#服源码也不太适用于小规模的企业通讯场景,用客#服源码往企业通讯场景上套就有点“杀鸡用牛刀”,因为企业通讯更强调功能丰富而非极限性能,与客#服源码的目标不符,所以二者的上层设计也不同。如果希望支持企业通讯场景,您还需要对客#服源码进行二次开发。
功能相关特性:
1、(业务功能完善性)客#服源码支持几乎所有商用即时通讯产品所支持的即时通讯相关功能(甚至还有更多的业务功能),且无业务功能限制,同时也支持一些诸如敏感词过滤(基于双数组Trie的AC自动机算法实现)、消息冷热分离存储等高级IM功能。
2、(功能拓展性)客#服源码同时支持两种拓展模式:配置参数与开发插件。当然您也完全可以对源码进行修改。目前用于接入的MinIO对象存储服务的插件客#服源码-plugin-minio就是基于客#服源码-plugin实现的。
3、(配置灵活性)客#服源码提供了上百个配置参数供用户定制,以满足各种需求。并且大部分配置都可以在集群运作时(不需要停机),进行集群级别的同步更新,并且无性能损失。
通用架构特性:
1、(敏捷性)支持在用户无感知的情况下,对客#服源码服务端进行停机更新,为快速迭代提供可能
2、(可伸缩性)无状态架构,客#服源码集群支持弹性扩展与异地多活的部署实现,用户可通过DNS就近接入
3、(可部署性)支持容器化部署,方便与云服务对接,以实现全自动化部署与运维。客#服源码默认提供了docker镜像、docker-compose脚本、Terraform模块三套容器化部署方案
4、(可观测性)具备相对完善的可观测性体系设计,为业务统计与错误排查提供可能
5、(可拓展性)能同时支持中大型即时通讯场景,即便用户体量由小变大也无需重构(当然,对于大型运用场景还有很多优化的工作需要做,但当前架构不影响后期的无痛升级)
6、(安全性)提供限流防刷机制与全局用户/IP黑名单机制,以抵御大部分CC攻击
7、(简单性)核心架构“轻量”,方便学习与二次开发(原因请查阅 客#服源码架构设计)
客#服源码使用MongoDB分片架构,并支持请求路由(如读写分离)、冷热数据分离,同时也支持跨地域多活部署与数据主主同步,为大规模跨国部署提供实际操作的可能。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190894.html原文链接:https://javaforall.cn