Skip to content

IM系统架构设计文档,Spring Cloud分布式微服务架构设计,提供Netty高性能、高可用的即时通讯解决方案

Notifications You must be signed in to change notification settings

imchatkit/im-kit-doc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IM系统架构设计文档

1. 项目概述

1.1 系统简介

该项目是一个企业级即时通讯(IM)系统,采用分布式微服务架构设计,提供高性能、高可用的即时通讯解决方案。

1.2 技术栈

  • 网关层:Spring Cloud Gateway
  • 通信层:Netty WebSocket
  • 服务层:Spring Boot、Dubbo
  • 存储层:MySQL、Redis
  • 消息队列:RocketMQ
  • 注册中心:Nacos
  • 监控告警:opentelemetry

2. 系统架构

2.1 核心模块

2.1.1 接入层

  • im-api-gateway: HTTP请求网关,负责API请求的路由和鉴权
  • im-ws-gateway: WebSocket网关,基于Netty实现,处理实时消息的收发

2.1.2 业务层

  • im-user: 用户管理服务,处理用户注册、登录等基础功能
  • im-friend: 好友关系服务,管理用户间的好友关系
  • im-room: 聊天室服务,支持单聊、群聊等多种场景
  • im-msg-store: 消息存储服务,保证消息可靠性和持久化
  • im-push: 消息推送服务,确保消息实时送达

2.1.3 基础设施层

  • im-common: 公共组件,包含工具类和通用配置
  • im-framework: 框架层,提供统一的技术标准和规范
  • im-rpc-api: RPC接口定义,实现服务间通信
  • im-entity: 实体类定义,包含数据库映射关系

2.2 消息链路

用户发送消息的过程包括以下步骤,确保消息的最终一致性和高可用性:

  1. 消息发送

    • 用户在客户端发送消息,首先通过WebSocket连接到 im-ws-gateway
    • im-ws-gateway 负责将消息转发到消息队列(RocketMQ)以解耦发送和接收过程。
  2. 消息接收与校验

    • im-receiver 服务从消息队列中获取消息,并进行基础校验,如检查发送者是否有发送权限。
    • 校验通过后,im-receiver 将消息重新发布到队列中,等待进一步处理。
  3. 消息处理

    • im-processor 服务从队列中订阅消息,负责消息的持久化存储到数据库中。
    • 处理完成后,消息通过消息队列传递给同步服务。
  4. 消息同步

    • im-sync 服务负责从队列中获取已处理的消息,并将其同步到所有在线的接收者。
    • 同步服务确保所有接收者都能实时接收到最新消息。
  5. 失败处理

    • 在任何步骤中,如果处理失败,相关服务可以将消息重新发送回队列,进行重试,确保消息不会丢失。

2.3 消息服务划分

  • im-receiver

    • 负责接收来自WebSocket网关的消息。
    • 进行消息的初步校验和权限检查。
    • 将校验通过的消息推送到消息队列中。
  • im-processor

    • 从消息队列中订阅消息。
    • 负责消息的持久化存储。
    • 将处理完成的消息推送到同步服务的队列。
  • im-sync

    • 负责从处理服务接收消息。
    • 将消息同步到所有在线的接收者,确保消息的实时性和一致性。

这种微服务架构设计支持高并发处理,通过消息队列的削峰填谷能力,保证系统在高负载情况下的稳定性。同时,服务之间的解耦使得系统更容易扩展和维护。

3. 核心特性

3.1 高可用设计

  • 服务无状态化,支持水平扩展
  • 支持分布式多机房部署,异地容灾
  • 消息队列削峰填谷
  • 核心服务多副本部署

3.2 安全机制

  • 可全链路数据加密
  • 用户身份认证
  • 消息防重放
  • 敏感词过滤

3.3 业务功能

  • 单聊/群聊支持
  • 消息类型:文本、图片、语音、视频等
  • 在线状态管理
  • 消息提醒与免打扰
  • 历史消息查询

4. 性能指标

4.1 关键指标目标

  • 消息实时性:99.9%消息延迟<500ms
  • 系统容量:单集群支持百万级在线用户
  • 消息可靠性:消息到达率99.99%
  • 系统可用性:99.99%

4.2 扩展性

  • 支持业务功能水平扩展
  • 支持存储容量垂直扩展

5. 部署架构

5.1 环境规划

  • 开发环境
  • 测试环境
  • 预发布环境
  • 生产环境

5.2 容器化部署

  • 基于Kubernetes编排
  • 支持服务自动扩缩容
  • 统一的日志收集和监控

6. 后续规划

6.1 功能增强

  • 消息回执
  • 消息撤回
  • 消息转发

6.2 性能优化

  • 消息压缩
  • 连接复用
  • 智能路由
  • 缓存优化

7. 运维支持

7.1 监控告警

  • 系统性能监控
  • 业务指标监控
  • 异常实时告警

7.2 运维工具

  • 配置中心
  • 服务治理
  • 链路追踪
  • 日志分析

About

IM系统架构设计文档,Spring Cloud分布式微服务架构设计,提供Netty高性能、高可用的即时通讯解决方案

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published