众品合一移动push系统架构

pushplatform分布式方案

各模块的协作过程如下图所示:

  • Push Communicator 注册(棕色箭头1):当 Push Communicator 启动时,访问 Session Monitor 的 Communicator 注册接口,将自身 host 及 port 等相关信息提交给 Session Monitor;
  • 移动端获取 Push Communicator 的 Socket 接口相关信息(蓝色箭头2):移动应用访问 Push Server 的/push/platform_locate 接口(该接口目前已实现,移动端程序不需要做任何修改),提交相关请求信息;Push Server 将相关信息提交至 Session Monitor 的身份验证接口,验证通过后,请求 Session Monitor 的 Communicator 分配接口,Session Monitor 根据当前各个 Session Monitor 负载情况,分配一个 Communicator 给该移动端,并将相关信息返回;
  • 移动端连接 Communicator (绿色箭头3):移动应用获得 Communicator 的host 和 port 等信息后,发起 Socket 连接;Communicator 验证身份通过后,将该移动端设为在线状态,并将该 Socket Session 通过 Session Monitor 的 Socket Session 注册接口进行注册,Session Monitor 记录下该信息;
  • 发送 push 消息 (橙色箭头4):应用服务器发送 http 请求至 Push Server /push/message 接口,Push Server 访问 Session Monitor Socket Session 定位接口获取需要发送消息的移动应用的 Socket 连接位于哪个 (或哪几个) Push Communicator 上,然后往相应的 Push Communicator 发送相关 Push 消息,Push Communicator 通过 Socket 连接发送消息给移动端;
  • Socket 连接断开 (紫色箭头5):当移动端与 Push Communicator 之间的 Socket 连接断开时,Push Communicator 访问 Session Monitor 的 Socket Session 移除接口,删除该 Socket 连接相关信息。