推送服务是一个老生常谈的问题了,目前业界也有很多解决方案,但如何从0到1构建一个高效、稳定的push服务呢,我在这里跟大家分享一下整个过程。
整体架构图
Paste_Image.png时序图
时序图 (1).png1. 客户端首先通过Router Serv获取可用的Conn Serv IP和Port。
2. 根据第1步获取的IP和Port建立长连接,建立好以后发送客户端数据用于注册(注册的意思就是要标识连接跟客户端的对照关系,比如帐号+终端类型等)。
3. 后台通过手动或者API的方式写入消息到MQ中,Push Serv通过轮训或者订阅的方式获取MQ消息,并通过查询客户端和机器IP的对照关系,选择推送到特定的Conn Serv。
4. Conn Serv获取到要推送的消息,传递给对应的客户端
技术难点
- 自定义协议
- 服务高性能和高可用
- Conn serv多端口监听和转发
- 客户端和描述符对应关系存储
- 数据统计(送达率,失败率等)
接下来会根据以上几点进行详细介绍……
网友评论