概述
mpush是github上開源的一個實時消息組件。底層使用netty,適合手機端app實時聊天場景。
系統架構
消息推送流程時序圖如下,推送方不需要TCP長連接,接收方需要TCP長連接。
相當於客戶端A和服務端建立了TCP通道后,客戶端B發消息給A的時候,客戶端B只需要推送給服務端,通過alloc+zookeeper負載均衡到一台push server上,push server分發消息到指定的客戶端clientA
消息存儲
mpush核心功能是實時消息,消息存在內存中。
redis是分發消息,做路由功能用到的。
zookeeper是alloc服務的負載均衡功能中用於尋找一個比較空閑的push server。
消息丟失
目前嚴格的測試,官方也沒有提供測試報告,不確定是否存在消息的情形,上生產需要注意。
使用場景
mpush的功能比較完善,有IOS, Android的客戶端SDK,push server的服務端的代碼也非常清晰。模塊划分一目了然。
可讀性強,是個不錯的項目,上生產風險比較小。
目前為止有兩年沒有更新了,git上的項目很多都是這樣,中國程序員忙於生計,沒有什么更新的動力。
相關文檔
項目文檔:http://mpush.mydoc.io/?t=134333
github: https://github.com/mpusher/