PeaceSheep's blog PeaceSheep's blog
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)

PeaceSheep

以最简洁、易懂的话解决问题
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)
  • 下载器

  • 作业网站管理

  • 联邦学习

  • 随手写的小项目

  • docker

  • 即时通讯

    • 想自己写一个高性能的IM
    • 自己实现高性能IM-服务划分
      • API 网关
        • 功能
      • 一、用户管理模块
      • 1. 用户服务
        • 功能
      • 2. 鉴权服务
        • 功能
      • 二、房间管理模块
      • 1. 房间服务
        • 功能
      • 2. 在线状态服务
        • 功能
      • 三、消息处理模块
      • 1. 长连接服务
        • 功能
      • 2. 消息推送代理
        • 功能
      • 3. 消息推送服务
    • 自己实现高性能IM-初始代码框架搭建并实现依赖注入
    • kitex 与 hertz 配合使用,实现服务发现链路追踪等功能
  • 项目
  • 即时通讯
PeaceSheep
2024-10-18
目录

自己实现高性能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. 消息推送服务

  • 负责从消息队列取出消息,通过在线服务推送给对应的长连接服务

sheepim-push-worker-service (opens new window)

编辑 (opens new window)
上次更新: 2025/04/15, 10:52:45
想自己写一个高性能的IM
自己实现高性能IM-初始代码框架搭建并实现依赖注入

← 想自己写一个高性能的IM 自己实现高性能IM-初始代码框架搭建并实现依赖注入→

最近更新
01
ubuntu安装g++显示已有但是输入g++又找不到命令
04-15
02
使用cloudflare-r2搭建webdav
04-08
03
LLM聚合平台客户端对比
03-29
更多文章>
Theme by Vdoing | Copyright © 2022-2025 PeaceSheep
冀ICP备2022004632号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式