Smalldok's Tech Blog

穷则变、变则通、通则达


  • 首页

  • 分类

  • 关于

  • 标签

  • 归档

  • 公益 404

  • 搜索

系统架构说明

| 分类于 源码学习 , MPush , 架构分析 | 评论数: | 阅读次数:

系统架构说明
1、逻辑架构
2、服务调用关系
3、Mpush server启动模块
4、消息传递流程(接入服务/Websocket服务)
5、云到端消息推送流程

逻辑架构

逻辑架构

1、最左侧三大组件分别是日志系统、监控系统、控制台治理服务

  • Log System 主要负责业务日志大输出,主要有链接相关日志、推送链路日志、心跳日志、监控日志等
  • Monitor 主要用作系统状态监控,可用于系统调优,包括jvm内存,线程,线程池,系统堆栈,垃圾回收情况,内存泄漏情况等。
  • AdminServer主要用于在控制台对单台机器进行控制与探查,比如参看连接数量,在线用户数,取消本级ZK注册,关闭服务等

2、右侧三个分别是ZK服务,配置中心和安全工具箱

  • ZK Client 主要负责注册长链接ip:port,网关ip:port以及监听各个节点变化,同时增加了缓存
  • ConfigCenter 是MPUSH Server 配置化的关键,贯穿到各个模块,非常重要
  • Sercutity Box 主要实现了RSA加密,DES加密,会话密钥生成及Session复用(用于快速重连)

3、Core模块分别是长链接服务,网关服务,Packet编解码及分发模块,Message序列化及处理模块

  • ConnectServer用于维持和客户端之间的TCP通道,主要负责和客户端交互
  • GatewayServer用于处理Mpush Server之间的消息交互比如踢人,发送PUSH
  • Packet主要是协议部分的编解码和包的完整性校验,最大长度校验等
  • PacketReceiver主要负责消息的分发,分发是根据Command来的
  • Connection/ConnectionManager主要负责链接管理,定时检查链接空闲情况,是否读写超时,如果链接断开发出相应的事件给路由中心去处理
  • Message部分是整个的业务核心处理了处理消息的序列化,还有压缩、加密等,MessageHandler会根据不同消息独立处理自己所属的业务,主要有:心跳响应、握手及密钥交换、快速重连、绑定/解绑用户、http代理、消息推送等

4、路由中心主要包括:本地路由,远程路由,用户在线管理三大块

  • LocalRouterManager负责维护用户+设备与链接(connection)之间的关系
  • RemoteRouterManager负责维护用户+设备与链接所在机器IP之间的关系
  • UserManager主要处理用户上下线事件的广播,以及单台机器的在线用户及数量的维护和查询
    5、MPUSH的缓存部分,目前只支持Redis,支持双写,主备,hash 等特性

见其官网说明:http://mpush.mydoc.io/?t=134339

服务依赖关系

服务依赖关系

  • 业务系统是要发送业务消息的服务,所有要推送的消息直接转给MPNS
  • MPNS是我们的业务推送系统,负责消息推送,长链接的检查,离线消息存储,用户打标等
  • APNS、JPUSH、MPUSH等分别是我们的客户端已经接入的推送系统
  • MPNS主要是为了隔离业务系统和各种推送系统,用户使用哪个长链接服务,业务系统不需要感知,统一有MPNS去选择、去切换
  • Alloc负责调度维护MPushServer集群,提供查询可用机器列表的接口,详细参见[Alloc实现]

Mpush server启动模块

Mpush server启动模块

消息传递流程(接入服务/Websocket服务)

接入服务

接入服务

Websocket服务

Websocket服务

云到端消息推送流程

云到端消息推送流程

1…212223…100
smalldok

smalldok

JAVA服务端架构,目前方向是微服务落地、基础设施、中间件、DevOps

100 日志
27 分类
17 标签
Links
  • sofa-bolt
  • sofa-rpc
  • dubbo
  • sofa-tracer
  • sofa-boot
  • Sentinel
  • COLA
  • nacos
  • xxl-job
  • apollo
  • sharding-sphere
  • fescar
  • ByteTCC
  • tcc-transaction
  • rocketmq
  • canal
  • arthas
  • jvm-sandbox
  • sofa-lookout
  • disruptor
  • mpush
© 2007 – 2019 smalldok
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v6.7.0