分佈式消息推送服務 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再基於好友/羣組關係路由到各個對端應用)。

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