系统概述
- 功能: 支持千万级用户的消息推送,包括通知和透传消息,快速触达用户,提升用户留存和活跃度。
- 接入方式: 通过API接入,实现消息的即时推送。
- 管理后台: 提供网页端后台,便于应用授权、业务管理、消息管理及数据查看。
基本概念
- 移动推送: 服务器将信息实时定向送达手机的服务,具备指定接收者和实时性。
推送消息分类
- 通知消息: 显示在手机通知栏,适用于多种场景,如新闻、促销、产品信息等。
- 透传消息: 直接送达应用,不显示在通知栏,用于应用内业务逻辑,要求APP在线。
推送基本原理
- PULL方式: 客户端定时查询服务端,考虑轮询频率,避免资源浪费。
- PUSH方式: 服务器主动推送,客户端被动接收,需维持长连接,实时性强,消耗资源。
- SMS方式: 通过拦截短信获取信息,成本高,使用较少。
功能介绍
- 推送形式: 包括通知栏消息、应用内透传消息、点击跳转消息。
- 推送方式: 支持按用户、设备、模板、条件、定时推送。
推送流程
- 客户端SDK通过安全验证连接接入层服务。
- 绑定token及用户信息,分库分表存储。
- 业务方调用API发起推送请求。
- 推送请求写入Kafka队列。
- 消费服务查找设备,推送给第三方平台。
- 第三方系统推送消息至客户端。
- 厂商回调服务端接口,统计触达率。
- 客户端SDK回调点击接口,统计点击率。
服务端设计
- 创建token,缓存应用token。
- 提供统一接口,屏蔽厂商推送细节。
- 批量推送接口限制,拆分任务,推送并记录结果。
规划与展望
- 速率限制: 增加主动退避的速率限制功能。
- 用户画像对接: 迭代用户画像标签,方便圈选用户群体。
- 数据漏斗: 增加数据维度,提高监控效率。
- 机器学习: 结合推送数据,提高召回率。