分布式消息推送服务 hanbo-push

故事背景

最近看到一篇关于百万级推送架构的介绍,正好解决了之前一直想做但没有做的难题,因为兴趣爱好一开始我手撸了一遍一个小demo,项目源码请移步这里

正式版1.0已经发布,请点击这里查看详情。

系统概览

app接入除了接入restApi(push-admin)之外,还需要兼容connector(push-admin的client,用于和push-server通信)的通信协议。

基于protostuff编解码,协议定义参考PushRequest.java/PushResponse.java。

推送:只有下行消息(服务端到app)

IM:分上下行消息(app到服务端再到app)

 

演示

1.创建开发者账号

注册开发者账号

2.创建app

创建app

APP设备注册

APP鉴权

推送:鉴权成功后拿到真实的推送服务ip地址,然后建立长连接并发起注册请求,后续等待后台推送消息即可。

IM:同上述流程,只不过前提需要建立好友、群组等关系,ok后就可以发起聊天了。

3.选择APP,点击发布消息

消息列表

发布消息

4.admin收到推送指令,下发给所有当前app关联的设备id

6.推送服务收到admin转发的推送指令,依次下发到注册设备的长连接上

7.客户端收到来自管理员的推送消息

架构图

app为移动设备,3rdparty为三方服务(一般为服务端)。

 

模块讲解

restApi(admin),开放给三方的功能接口。

开发者注册

app设备鉴权

好友管理

群组管理

推送管理

connector

连接pushServer的桥梁,内置在pushAdmin

自动发现服务
一致性hash路由

客户端故障转移

router

维护用户和连接的映射

维护用户和服务的映射

pushServer

注册连接

推送消息

路由转发

webProxy

对connector做了一层封装,暴露websocket协议

推送流程

IM流程大致同推送流程,只不过多了一层上行消息(通过restApi发布消息,pushServer再基于好友/群组关系路由到各个对端应用)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章