【技术实现步骤摘要】
消息推送方法、装置、系统、电子设备和存储介质
[0001]本公开涉及计算机领域,具体涉及大数据、云计算等
,尤其涉及消息推送方法、装置、系统、电子设备和存储介质。
技术介绍
[0002]消息一致性在分布式系统中广泛存在,也是分布式系统中强依赖的应用场景,而事务消息是解决消息一致性的通用解决方案。如何将分布式系统中的消息生产者所生产的事务消息,推送至分布式系统中的消息消费者,是非常重要的。
技术实现思路
[0003]本公开提供了一种用于消息推送方法、装置、系统电子设备和存储介质。
[0004]根据本公开的一方面,提供了一种消息推送方法,包括:
[0005]获取分布式系统中的任一服务节点生成的至少一个事务消息,并将所述至少一个事务消息缓存至至少一个第一数据库;
[0006]监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;
[0007]从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中;
[0008]将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的服务节点。
[0009]根据本公开的另一方面,提供了一种消息推送系统,包括:
[0010]分布式系统中的至少一个第一服务节点,用于生成至少一个事务消息,并发送所述至少一个事务消息;
[0011]所述分布式系统中的至少一个第二服务节点,用 ...
【技术保护点】
【技术特征摘要】
1.一种消息推送方法,所述方法包括:获取分布式系统中的任一服务节点生成的至少一个事务消息,并将所述至少一个事务消息缓存至至少一个第一数据库;监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中;将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的服务节点。2.根据权利要求1所述的方法,其中,所述将所述至少一个事务消息缓存至至少一个第一数据库,包括:针对获取到的每个所述事务消息,将所述事务消息的标识设置为等待,并将标识为等待的所述事务消息存储至所述至少一个第一数据库;向所述任一服务节点发送事务回查请求,其中,所述回查请求用于查询所述事务消息是否能够推送;接收所述任一服务节点发送的事务回查响应,其中,所述事务回查响应是所述任一服务节点响应于所述事务回查请求,根据所述事务消息所依赖的目标事务的执行结果生成的;在所述事务回查响应包含第一指示信息的情况下,根据所述第一指示信息,将所述至少一个第一数据库中的所述事务消息的标识更新为可投递,其中,所述第一指示信息是所述任一服务节点确定所述目标事务执行成功后生成的,用于指示能够推送所述事务消息。3.根据权利要求2所述的方法,其中,所述接收所述任一服务节点发送的回查响应之后,所述方法还包括:在所述事务回查响应包含第二指示信息的情况下,删除所述至少一个第一数据库中的所述事务消息,其中,所述第二指示信息是所述任一服务节点确定所述目标事务执行失败后生成的,用于指示不能推送所述事务消息。4.根据权利要求2所述的方法,其中,所述从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,包括:基于事务隔离机制,从所述第二数据库中的候选消息中,获取标识为可投递的目标消息。5.根据权利要求1所述的方法,其中,所述监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库,包括:监测所述至少一个第一数据库中缓存的事务消息,响应于到达设定时间点,从所述至少一个第一数据库中缓存的事务消息中,获取不高于设定数量的事务消息,并作为所述候选消息;启动第一异步线程;通过所述第一异步线程,将所述候选消息写入所述第二数据库。6.根据权利要求1所述的方法,其中,所述将所述目标消息队列中的目标消息推送至所
述分布式系统中订阅所述目标消息的主题的服务节点,包括:确定所述目标消息队列中各所述目标消息对应的主题;启动第二异步线程;通过所述第二异步线程,将所述目标消息队列中的各所述目标消息推送至订阅各所述目标消息的主题的服务节点。7.根据权利要求6所述的方法,其中,所述通过所述第二异步线程,将所述目标消息队列中的各所述目标消息推送至订阅各所述目标消息的主题的服务节点之后,还包括:针对所述目标消息队列中的任一目标消息,在向订阅所述任一目标消息的目标服务节点推送所述任一目标消息后,统计所述任一目标消息的已推送时长,并将所述任一目标消息的推送状态标记为已推送状态;在所述已推送时长达到所述任一目标消息对应的时长阈值的情况下,若未接收到所述目标服务节点发送的响应消息,则确定所述任一目标消息推送失败,其中,所述响应消息用于指示接收到所述任一目标消息;将所述任一目标消息的推送状态更新为推送失败状态;将推送失败状态的所述任一目标消息重新添加至所述目标消息队列,以重新推送所述任一目标消息。8.根据权利要求7所述的方法,其中,所述方法还包括:确定所述任一目标消息推送失败的次数;根据所述次数,更新所述任一目标消息对应的时长阈值,其中,更新后的所述时长阈值与所述次数成正向关系。9.一种消息推送系统,所述系统包括:分布式系统中的至少一个第一服务节点,用于生成至少一个事务消息,并发送所述至少一个事务消息;所述分布式系统中的至少一个第二服务节点,用于获取所述至少一个第一服务节点发送的所述至少一个事务消息,并将所述至少一个事务消息缓存至第一数据库;所述分布式系统中的至少一个第三服务节点,用于监测所述至少一个第二服务节点中的所述第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;所述分布式系统中的至少一个第四服务节点,用于从所述至少一个第三服务节点中的所述第二数据库中的候选消息中,获取满足第二设定条件...
【专利技术属性】
技术研发人员:白建民,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。