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

故事背景

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

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

系统概览

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

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

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

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

 

分布式消息推送服务 hanbo-push_第1张图片

演示

1.创建开发者账号

分布式消息推送服务 hanbo-push_第2张图片

2.创建app

分布式消息推送服务 hanbo-push_第3张图片

APP设备注册

分布式消息推送服务 hanbo-push_第4张图片

APP鉴权

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

IM:同上述流程,只不过前提需要建立好友、群组等关系,ok后就可以发起聊天了。分布式消息推送服务 hanbo-push_第5张图片

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

分布式消息推送服务 hanbo-push_第6张图片

分布式消息推送服务 hanbo-push_第7张图片

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

分布式消息推送服务 hanbo-push_第8张图片

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

分布式消息推送服务 hanbo-push_第9张图片

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

分布式消息推送服务 hanbo-push_第10张图片

架构图

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

分布式消息推送服务 hanbo-push_第11张图片

 

模块讲解

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

开发者注册

app设备鉴权

好友管理

群组管理

推送管理

connector

连接pushServer的桥梁,内置在pushAdmin

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

客户端故障转移

router

维护用户和连接的映射

维护用户和服务的映射

pushServer

注册连接

推送消息

路由转发

webProxy

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

推送流程

分布式消息推送服务 hanbo-push_第12张图片

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

你可能感兴趣的:(实战)