专栏名称: 亿级流量网站架构
开涛技术点滴
目录
相关文章推荐
伯乐在线  ·  499 美元的"爱国税"?特朗普 T1 ... ·  11 小时前  
伯乐在线  ·  499 美元的"爱国税"?特朗普 T1 ... ·  11 小时前  
老刘说NLP  ·  GraphRAG提速新思路E^2GraphR ... ·  昨天  
伯乐在线  ·  苹果 AI 发展受挫!AI 部门负责人或将被降职 ·  2 天前  
伯乐在线  ·  苹果 AI 发展受挫!AI 部门负责人或将被降职 ·  2 天前  
程序员小灰  ·  微软放大招!Visual Studio ... ·  3 天前  
51好读  ›  专栏  ›  亿级流量网站架构

京东大规模消息推送平台搭建实践

亿级流量网站架构  · 公众号  · 程序员  · 2020-02-12 11:50

正文

请到「今天看啥」查看全文


在设备维度,平台会存储dt,pin和appId的对应关系,用于具体推送消息的组建以及设备数据的维护。

在消息维度,平台对于每次业务方推送请求的调用,生成一个msgId,并返回给调用方,这个msgId会在整个推送过程中被携带,从推送平台生成,推送到自建或者厂商通道,触达到客户端,最后回执给推送平台。这种方式是对整个推送流程追踪的必备条件,方便排查问题和推送数据统计。


关键技术环节
1、 推送请求的处理

业务方推送可以通过平台页面创建,和调用send-api服务接口两种方式,后者的使用较为频繁。平台提供http和JSF两种接口调用形式,推送请求按照实时性分类,可以分为即时推送消息和定时推送消息。

对于要求即时推送的消息请求,api服务在接到有效调用后,会立即调用通道侧的推送接口进行推送。对于需要定时推送的消息,api服务会将任务写到redis的有序集合中。send-worker会定时拉取各个应用集合中的推送任务,并将到达推送时间的任务取出,进行封装,调用通道侧服务进行推送,得到成功回执后,将任务移除。



为了提高接口性能,除基础参数校验之外,其他请求处理流程均采用异步方式。使用线程池执行每次推送请求的处理过程,缩短响应时间。这样可以减小高并发大量请求时,因响应时间过长,导致的响应超时或者JSF线程池耗尽的情况发生。


2、 请求厂商通道

通道侧在收到平台侧封装好的推送请求后,会筛选出dt,然后将消息内容体和dt组合在一起,去请求厂商通道。如果业务方传的是pin,系统则会根据对应关系定位到pin对应的dt集合。当有厂商回执清理dt,或者业务方调用解绑或者注销dt接口时,这个dt集合是动态实时更新的。对于一次推送到大量dt的相同消息体,也就是群推或者广播的情况,系统会将dt分组发送,以控制请求体的大小。








请到「今天看啥」查看全文