# BusinessPushPlatform **Repository Path**: ywj1352/businessPushPlatform ## Basic Information - **Project Name**: BusinessPushPlatform - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##系统架构 ![avatar](msg/系统架构图.jpg) 解释 1. 最左侧三大组件分别是日志系统、监控系统、控制台治理服务 – Log Center 主要负责业务日志大输出,主要有链接相关日志、推送 链路日志、心跳日志、监控日志等 – Monitor Center 主要用作系统状态监控,可用于系统调优,包括 jvm 内存,线程,线程池,系统堆栈,垃圾回收情况,内存泄漏情况 等。 – AdminCenter 主要用于在控制台对单台机器进行控制与探查,比如参 看连接数量,在线用户数,取消本级ZK 注册,关闭服务等 2. 右侧三个分别是注册中心,配置中心和安全工具箱 – 注册中心主要负责注册长链接ip:port,网关ip:port 以及监听各个 节点变化,同时增加了缓存 – ConfigCenter 是Lion Server 配置化的关键,贯穿到各个模块, 非常重要 – Sercutity Box 主要实现了RSA 加密,DES 加密,会话密钥生成及 Session 复用(用于快速重连) 3. Core 模块分别是长链接服务,网关服务,Packet 编解码及分发模块, Message 序列化及处理模块 – ConnectServer 用于维持和客户端之间的TCP 通道,主要负责和客 户端交互 – GatewayServer 用于处理Lion Server 之间的消息交互比如踢人, 发送PUSH – Packet 主要是协议部分的编解码和包的完整性校验,最大长度校验 等 – PacketReceiver 主要负责消息的分发,分发是根据Command 来的 – Connection/ConnectionManager 主要负责链接管理,定时检查链 接空闲情况,是否读写超时,如果链接断开发出相应的事件给路由中 心去处理 – Message 部分是整个的业务核心处理了处理消息的序列化,还有压 缩、加密等,MessageHandler 会根据不同消息独立处理自己所属的 业务,主要有:心跳响应、握手及密钥交换、快速重连、绑定/解绑 用户、http 代理、消息推送等 4. 路由中心主要包括:本地路由,远程路由,用户在线管理三大块 – LocalRouterManager 负责维护用户+设备与链接(connection)之 间的关系 – RemoteRouterManager 负责维护用户+设备与链接所在机器IP 之 间的关系 – UserManager 主要处理用户上下线事件的广播,以及单台机器的在线 用户及数量的维护和查询 5. Cache Center 是Lion 的缓存部分,目前只支持Redis,支持双写,主备, hash 等特性 ##模块划分 ![avatar](msg/模块划分.jpg) Lion-client:服务端SDK,主要提供发送Push 的接口给其他业务使用 Lion-boot:是服务端启动入口模块,主要控制server 启动、停止流程 Lion-api:定义了Lion 相关核心接口及协议,还包括对外暴露的SPI 接口 Lion-netty:主要提供netty 相关的一些基础类,像 NettyServer,NettyClient Lion-tools:Lion 用到的一些工具类,包括线程池,加密,配置文件解析等等 Lion-regsition:zookeeper 的client, 包括path 的定义,节点定义,数据监 听等 Lion-cache:redis 缓存模块,支持单机模式和3.x 集群模式,包括用户路 由,上下线消息等 Lion-common:定义了Lion-client 模块和Lion-core 模块都会用到的类, 主要是消息、路由等 Lion-core:sever 核心模块,包括接入服务,网关服务,路由中心,推送 中心等等 Lion-monitor:服务监控模块主要监控JVM,线程池,JMX,服务状态统 计,性能统计等 ##协议设计 协议说明 • lion 使用的为自定义私有协议,定长Header + body, 其中header 部分固定 13 个字节。 • 心跳固定为一个字节,值为 -21。 名称 类型 长度 说明 length int 4 表示body 的长度 cmd byte 1 表示消息协议类型 checkcode short 2 是根据body 生成的一个校验码 flags byte 1 表示当前包启用的特性,比如是否启用加密,是否启用 压缩 sessionId int 4 消息会话标识用于消息响应 lrc byte 1 纵向冗余校验,用于校验header