尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

通信是管道,业务是大脑: 一种优雅的 .NET 即时通讯系统架构

通信是管道,业务是大脑: 一种优雅的 .NET 即时通讯系统架构 KeiChat 一个通信与业务彻底分离的分布式 .NET 即时通讯系统「像搭积木一样写代码」—— 为 .NET 分布式系统解锁通信与业务彻底分离的架构自由 项目简介​KeiChat是一个历经多年迭代、生产环境验证的通讯系统解决方案。项目始于2018 年最初作为企业内部通信工具的核心引擎支撑了海量消息的可靠传输与复杂的业务场景并非一蹴而就的架构设计而是伴随着业务增长与技术演进经过多次重构沉淀而来的成熟方案。​ 在架构设计上本项目严格遵循“业务领域与实时通信通信底座分离”的原则将长连接管理、消息路由等基础设施与核心业务领域模型彻底解耦。通信底座是自主研发的高性能即时通讯引擎专注于解决高并发长连接管理和消息实时路由的硬核问题对标的是支撑千万级在线的通信底座能力。业务领域层则是基于 .NET9 微服务架构构建的完整社交业务矩阵覆盖用户关系链、群组社交、内容生态、安全风控等全场景。​ 这种分层架构让我们能够做到——通信层追求极致的稳定与低延迟业务层保持敏捷的产品迭代速度两者通过事件驱动机制松耦合协作既保障了系统整体的 SLA又为后续功能扩展预留了充分的架构弹性。基于此原则整个后端系统被拆分为两个独立的源码仓库业务领域作为系统的业务层由 8 个 .NET WebAPI 微服务组成负责用户、关系链、内容、文件、安全审计等所有复杂业务逻辑与数据持久化业务层可灵活迭代而不影响长连接稳定性。通信底座作为系统的接入层专注于维持海量 TCP 长连接、心跳保活、消息接收与路由转发不掺杂任何业务逻辑。KeiChat 系统架构图✨ 微服务概览验证码服务验证码发送、安全验证、防刷保护。‍♂️用户服务注册登录、资料编辑、密码重置、状态同步。‍好友关系服务搜索、好友请求、同意/拒绝、好友列表管理、好友信息管理、黑名单管理。‍‍群组服务创建群、邀请/移除成员、群成员禁言、设置管理员、权限控制、发布群公告、群信息编辑。⭐个人收藏服务收藏消息/图片/链接收藏管理/表情、内容检索。朋友圈服务动态发布、点赞、评论、时间线聚合。文件服务图片、视频、文档的上传、转码与对象存储分发。️风控服务处理消息内容、朋友圈内容敏感词拦截与过滤。 业务模块的压力测试报告️ 管理后台功能概览仪表盘实时统计用户总量、在线人数、消息吞吐量。‍♂️用户管理用户信息查看、账号封禁/解封/注销。‍‍群组管理查看群组信息、违规群组封禁。️风控管理敏感词库、拦截日志记录、违规内容回溯与清理。⚙️系统管理客户列表、公证书列表。️ 管理后台部分功能截图️ 技术栈开发框架.NET 9架构模式微服务Microservices服务通信RESTful API、TCP Socket通信底座数据存储MySQL 或 SQL Server缓存Redis对象存储 MinIO反向代理Nginx容器化Docker、Docker Compose 开发环境要求Windows 10/11Visual Studio 2022 一键部署Docker Compose1. 快速启动 安装 Docker 与 Docker Compose 确保默认的TCP 通讯服务18168端口未被占用也可以在 docker-compose.yml 重新指定新的端口。⚠️ 部署前必改docker-compose.yml中的以下配置配置项所在服务说明EmailOptions__SmtpServerkeisoft-chat-captcha设置邮件服务器地址EmailOptions__SenderEmailkeisoft-chat-captcha设置发件人邮箱地址EmailOptions__SenderNamekeisoft-chat-captcha设置发件人名称EmailOptions__SmtpUsernamekeisoft-chat-captcha设置邮件服务器用户名EmailOptions__SmtpPasswordkeisoft-chat-captcha设置邮件服务器密码BrowseUrlkeisoft-chat-picture-file设置图片文件预览地址BrowseUrlkeisoft-chat-video-file设置视频文件预览地址BrowseUrlkeisoft-chat-common-file设置通用文件预览地址# 1. 克隆仓库gitclone https://github.com/macroecho/keisoft.chat.server.gitcdKeisoft.Chat.Server# 2. 一键启动所有服务后台运行dockercompose up-d2. Nginx 配置 (nginx.conf)修改Gateways/Keisoft.Chat.Gatewa.nginx.conf、Keisoft.Chat.Admin.App/nginx.conf、Files/minio-preview-nginx.conf等配置文件的域名或证书然后再添加到nginx.conf中。http { # 通用 API每秒 200 个请求突发 400正常高并发够用 limit_req_zone $binary_remote_addr zoneapi_general:20m rate200r/s; # 并发连接限制每个 IP 最多 30 个同时连接 limit_conn_zone $binary_remote_addr zoneapi_conn:10m; # minio 缓存池 proxy_cache_path /var/cache/nginx levels1:2 keys_zoneminio_cache:100m inactive24h max_size10g use_temp_pathoff; # minio 下载限流每个 IP 每秒 10 个请求 limit_req_zone $binary_remote_addr zoneminio_download:10m rate10r/s; # minio 连接数限制每个 IP 最多 20 个并发连接 limit_conn_zone $binary_remote_addr zoneminio_conn:10m; server { listen 888; # ... 省略 } # ... 省略 # 加载 KeiChat 所有的配置文件 include /www/wwwroot/Keisoft.Chat/Gateways/Keisoft.Chat.Gatewa.nginx.conf; include /www/wwwroot/Keisoft.Chat/Keisoft.Chat.Admin.App/nginx.conf; include /www/wwwroot/Keisoft.Chat/Files/Minio.Preview.nginx.conf; }3.部署 Keisoft.IM 方案4. 验证打开浏览器访问部署完成后管理后台地址http://xxx.xxx.xxx.xxx:6800 或Keisoft.Chat.Admin.App/nginx.conf中绑定的域名。管理员账户admin管理员密码abc123如果业务网关或通信网关绑定了 SSL/TLS 证书需要到系统管理/公证书列表导入公证书。客户端采用证书锁定 (Certificate Pinning)技术客户端内置服务端公钥指纹并在 TLS 握手阶段进行强一致性校验。此举彻底杜绝了基于用户自定义 CA 证书的 HTTPS 中间人抓包与流量解密显著提升了通信链路的安全水位。客户端业务网关地址设置为Keisoft.Chat/Gateways/Keisoft.Chat.Gatewa.nginx.conf绑定的域名。客户端通信网关地址位置为Keisoft.IM/Keisoft.IM.Http/nginx.conf绑定的域名。代码仓储// Chat Server Address. AppSettings.SetGateway(https://demo-chat.example.com); // Files Server Address. AppSettings.SetUploadFileGateway(https://demo-chat.example.com/upload-file); AppSettings.SetUploadVideoGateway(https://demo-chat.example.com/upload-video); AppSettings.SetUploadPictureGateway(https://demo-chat.example.com/upload-image); AppSettings.SetUploadAudioGateway(https://demo-chat.example.com/upload-audio); AppSettings.SetUploadMergeGateway(https://demo-chat.example.com/upload-merge); // IM Server Address. AppSettings.SetIMServerHost(ims://demo-im.example.com);⚖️使用条款与免责声明1.合法使用本系统的使用受以下条件限制您确认并同意仅将本系统用于合法目的并遵守所有适用的法律法规包括但不限于您所在司法管辖区、行为发生地及目标影响地的相关法律。您不得利用本系统从事任何侵犯他人合法权益、违反法律规定或危害网络安全的行为。若您违反上述任何条件本授权立即终止您必须立即停止使用本系统并删除所有相关副本。因您违反本声明导致的任何法律责任由您自行承担本项目维护者保留追究法律责任的权利。2.开源性质本项目以开源形式提供供学习、研究与技术交流之用。开发者不对本系统的功能完整性、安全性、稳定性或适用性作任何明示或暗示的保证。3.无担保声明在法律允许的最大范围内开发者不对因使用或无法使用本系统所导致的任何直接、间接、附带、特殊或后果性损害承担责任包括但不限于数据丢失、业务中断或其他商业损害。4.风险自担您理解并同意使用本系统所产生的所有风险由您自行承担包括但不限于系统漏洞、第三方依赖风险及运行环境风险。5.知识产权本系统及相关代码、文档的知识产权归原作者所有。未经书面许可不得将本系统用于商业目的或擅自篡改、再分发。 源码仓库GitHub: https://github.com/macroecho/keisoft.chat.serverGitee: https://gitee.com/keisoft/keisoft.chat.server
返回列表