diff --git a/README.md b/README.md index b7607aa5..5f1cff4e 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,88 @@ HuLa-Server 是一款基于 SpringCloud、SpringBoot3、Netty、MyBatis-Plus 和 • 集成Spring AI(deepseek、OpenAI、通义千问等),luohuo-ai-biz调用ai服务,提供调用第三方ai、工作流(TinyFlow)能力,扩展业务场景。 +## 🏗️系统架构 + +### 🚪 luohuo-gateway - 网关服务 +🔐 API网关 | 🛡️ 安全防护 | 🔄 服务路由 +- **路由转发:** 智能路由到后端微服务 +- **统一鉴权:** JWT令牌验证与权限检查 +- **服务发现:** 集成nacos实现动态服务发现 +- **流量控制:** 限流、熔断、降级保护 +- **安全过滤:** XSS防护、SQL注入防护 +- **日志记录:** 请求日志、审计日志 + +### 🏗️ luohuo-base - 基础服务 +🏢 租户管理 | 👥 组织架构 | 🔧 资源中心 +- **多租户架构:** 支持多租户数据隔离 +- **组织管理:** 部门、岗位、职级管理 +- **角色权限:** RBAC权限模型,细粒度控制 +- **应用模块:** 统一应用管理平台 + +### 🔐 luohuo-oauth - 认证服务 +- **多方式登录:** 账号密码、手机验证码、邮箱、扫码登录 +- **动态二维码:** 实时生成扫码登录二维码 +- **令牌颁发:** Token、RefreshToken生成 +- **会话管理:** 分布式会话存储与验证 +- **权限控制:** 基于角色的细粒度权限管理 + +### 💬 luohuo-im - IM业务服务 +👥 即时通讯 | 🏘️ 群组管理 | 💾 消息存储 +- **消息管理:** 单聊/群聊消息存储与转发 +- **群组管理:** 创建群组、成员管理、权限控制 +- **好友关系:** 好友添加、删除、黑名单管理 +- **会话管理:** 会话列表、置顶、消息状态 + +### 📡 luohuo-presence - 在线状态服务 +🟢 状态追踪 | 📊 实时统计 | 🔔 状态推送 +- **用户状态:** 实时追踪在线/离线状态 +- **群组统计:** 群成员在线情况统计 + +### 📶 luohuo-ws - websocket服务 +🔗 长连接管理 | 🚀 实时推送 | 📞 音视频通话 +- **连接管理:** 建立与维护会话的指纹级映射,宕机自动重连机制 +- **WebFlux异步架构:** 基础netty,提升并发性能 +- **消息路由:** 智能消息路由到目标客户端, 配合指纹机映射解决消息风暴 +- **P2P通话,SRS直连:** WebRTC一对一音视频通话 + +### ⚙️ luohuo-system - 后台服务 + +🖥️ 系统管理 | 📈 数据统计 | 🔍 监控审计 +- **系统配置:** IM系统参数配置管理 +- **用户管理:** 用户信息维护、封禁解封 +- **数据统计:** 用户活跃度、消息量统计 +- **系统监控:** 服务健康状态监控 +- **内容审计:** 消息内容安全审计过滤 + +## 📊 消息执行流程步骤详解 + +1. **客户端发送消息到网关** +2. **网关路由到对应的IM服务** +3. **IM服务进行消息持久化** +4. **调用IM内部PushService进行消息分发** +5. **PushService查询路由表, 获取目标用户所在的WS节点** +6. **获取节点-设备-用户映射关系** +7. **直接分发到各WS节点的专属主题** +8. **目标WS节点消费分发过来的主题消息** +9. **查找本地会话映射表** +10. **推送消息到具体客户端** +11. **客户端返回ACK确认**  +12. **更新消息状态为已送达**  + + +## 🌐 性能对比 (WS 服务) +| 指标 | 广播模式 | 精准路由模式 | 提升倍数 | 性能指标 | 说明 | +|:--- |:---:|:------------------:|---:|-------------------:|--------------------------:| +| **网络消息数** | O(N) | O(k) | 10-100倍 | - | | +| **CPU消耗** | 高 | 低 | 5-20倍 | 高并发下CPU<70% | | +| **内存占用** | 全节点缓存 | 仅目标节点 | 3-10倍 | 单连接<50KB | | +| **延迟时间** | 不稳定 | 稳定低延迟 | 2-5倍 | 平均<50ms | | + +## 🚀 系统扩展性 - 线性扩展能力 +- **用户增长:** 增加用户不会增加单个消息的复杂度 +- **节点扩展:** 增加节点不会增加单消息的推送成本 +- **流量增长:** 系统吞吐量随节点数线性增长 + ## 客户端预览  @@ -134,11 +216,10 @@ HuLa-Server 是一款基于 SpringCloud、SpringBoot3、Netty、MyBatis-Plus 和
与开发者和用户一起交流讨论,获取最新资讯和技术支持
-
+
+
📱 扫码加入微信讨论群
red
', '', '[{\"key\":\"xx\",\"value\":\"\"}]', '3', '02', b'1', '02', '44', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:23', 0, 1); INSERT INTO `def_msg_template` VALUES (245891967232245772, '244913337459015682', '01', 'CHUAGNLAN_REG_SMS', '注册短信', b'1', '111', '盘江煤电', '注册', '采购项目【${xmmc}】发起了${lbmc}质疑,等待您的答复', '', '[{\"key\":\"xmmc\",\"value\":\"\"},{\"key\":\"lbmc\",\"value\":\"\"}]', 'chuanglan短信', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:36', 0, 1); -INSERT INTO `def_msg_template` VALUES (250055645967941632, '244439130119864323', '01', 'REGISTER_SMS', '注册成功短信', b'1', 'SMS_99185070', '络火网', '', '尊敬的用户,欢迎注册络火网,您的注册验证码:${code},有效期5分钟。请勿将短信验证码告知他人!', '', '[{\"key\":\"code\",\"value\":\"\"}]', '', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:41', 0, 1); +INSERT INTO `def_msg_template` VALUES (250055645967941632, '244439130119864323', '01', 'REGISTER_SMS', '注册成功短信', b'1', 'SMS_99185070', '络火网', '注册成功', '尊敬的用户,欢迎注册络火网,您的注册验证码:${code},有效期5分钟。请勿将短信验证码告知他人!', '', '[{\"key\":\"code\",\"value\":\"\"}]', '', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:41', 0, 1); INSERT INTO `def_msg_template` VALUES (250660012290998275, '250025856074776718', '01', 'BAIDU_SMS_REG', '百度注册短信', b'1', 'sms-tmpl-awKvRY85349', 'sms-signQxkiwz88470', NULL, '您的验证码为:${code}, ${minute}分钟内有效', '', '[{\"key\":\"code\",\"value\":\"\"},{\"key\":\"minute\",\"value\":\"\"}]', '', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:44', 0, 1); INSERT INTO `def_msg_template` VALUES (250660012290998282, '250025856074776719', '01', 'TX_SMS', '腾讯注册短信', b'1', '1234', '腾讯云', NULL, '你的验证阿妈为: ${code}', NULL, '[{\"key\":\"code\",\"value\":\"\"}]', '', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:24:47', 0, 1); INSERT INTO `def_msg_template` VALUES (251763346439667713, '251763346439667712', '03', 'TEST', '测试', b'1', NULL, '', '发送一个xx', '发送 ${xmmc}, 哈哈哈 ${name}.', NULL, '[{\"key\":\"xmmc\",\"value\":\"\"},{\"key\":\"name\",\"value\":\"\"}]', '', '02', b'1', '01', '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 22:47:53', 0, 1); INSERT INTO `def_msg_template` VALUES (252969897242394624, '244439130119864323', '01', 'MOBILE_LOGIN', '手机登录短信', b'1', 'SMS_99185070', '络火网', '', '本次验证码为:${code}', '', '[{\"key\":\"code\",\"value\":\"\"}]', '', NULL, b'1', NULL, '', 1452186486253289472, '2021-12-12 12:12:12', 1452186486253289472, '2023-08-16 23:50:23', 0, 1); INSERT INTO `def_msg_template` VALUES (252969897242394625, '244881451621810192', '02', 'REGISTER_EMAIL', '注册邮件验证码', b'1', NULL, '', '欢迎注册${systemName}', '亲爱的${systemName}用户,您好:首先感谢您使用${systemName},请在验证页面输入以下验证码: ${emailCode} 本验证码${expireMinutes}分钟内有效,为了保障您的账户安全,请不要告诉别人如果您有什么疑问可以联系管理员,Email: ${adminEmail} ${systemName} ${currentTime} 本邮件系统自动发送,请勿回复 |
亲爱的${systemName}用户,您好:首先感谢您使用${systemName},请在验证页面输入以下验证码: ${emailCode} 本验证码${expireMinutes}分钟内有效,为了保障您的账户安全,请不要告诉别人如果您有什么疑问可以联系管理员,Email: ${adminEmail} ${systemName} ${currentTime} 本邮件系统自动发送,请勿回复 |
亲爱的${systemName}用户,您好:首先感谢您使用${systemName},请在验证页面输入以下验证码: ${emailCode} 本验证码${expireMinutes}分钟内有效,为了保障您的账户安全,请不要告诉别人如果您有什么疑问可以联系管理员,Email: ${adminEmail} ${systemName} ${currentTime} 本邮件系统自动发送,请勿回复 |
@@ -17,9 +18,8 @@ import java.util.List;
@Service
public class UserRoleDao extends ServiceImpl