自己实现高性能IM-服务划分
所谓万事开头难,首先想一下简单的服务划分,当然后面很可能会变,但至少现在要先决定一个,不然会一直想下去。由于是自己写的项目,所以不会把服务拆分的过于细致。
# API 网关
# 功能
使用 hertz 编写,提供 http 服务,是除长连接服务外,所有服务的对外访问接口。
sheepim-api-gateway (opens new window)
# 一、用户管理模块
# 1. 用户服务
# 功能
- 根据用户 id 获取用户信息
- 检查用户名和密码是否匹配
sheepim-user-service (opens new window)
# 2. 鉴权服务
# 功能
- 登录功能,根据用户名密码如果正确生成 token
- 根据token获取已登录用户信息
sheepim-auth-service (opens new window)
# 二、房间管理模块
# 1. 房间服务
# 功能
- 负责聊天房间的创建、加入、销毁
sheepim-room-service (opens new window)
# 2. 在线状态服务
# 功能
- 负责维护客户端的在线状态,以及存储每个客户端位于哪个长连接服务的实例上
sheepim-online-service (opens new window)
# 三、消息处理模块
# 1. 长连接服务
# 功能
- 维持与客户端的长连接
- 收到消息后,转发给推送代理
- 负责把推送服务发送过来的消息发送给客户端
sheepim-connect-service (opens new window)
# 2. 消息推送代理
# 功能
- 负责接受长连接服务收到的消息,将其加入消息队列
sheepim-push-proxy-service (opens new window)
# 3. 消息推送服务
- 负责从消息队列取出消息,通过在线服务推送给对应的长连接服务
编辑 (opens new window)
上次更新: 2025/03/29, 14:50:20