消息推送方法、装置、系统、电子设备和存储介质制造方法及图纸

技术编号:33530853 阅读:17 留言:0更新日期:2022-05-19 02:01
本公开提供了一种消息推送方法、装置、系统、电子设备和存储介质,涉及智能搜索、增强现实等领域。具体实现方案为:将分布式系统中的任一服务节点生成的至少一个事务消息缓存至至少一个第一数据库,并监测至少一个第一数据库中缓存的事务消息,以从缓存的事务消息中确定满足第一设定条件的候选消息,并将候选消息写入第二数据库;从第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将目标消息放入目标消息队列中,并将目标消息队列中的目标消息推送至分布式系统中订阅目标消息的主题的服务节点。由此,可以保证第二数据库中稳定写入消息,且可避免设备发生宕机等异常情况,而造成事务消息丢失的情况,保证事务消息的及时且有效推送。的及时且有效推送。的及时且有效推送。

【技术实现步骤摘要】
消息推送方法、装置、系统、电子设备和存储介质


[0001]本公开涉及计算机领域,具体涉及大数据、云计算等
,尤其涉及消息推送方法、装置、系统、电子设备和存储介质。

技术介绍

[0002]消息一致性在分布式系统中广泛存在,也是分布式系统中强依赖的应用场景,而事务消息是解决消息一致性的通用解决方案。如何将分布式系统中的消息生产者所生产的事务消息,推送至分布式系统中的消息消费者,是非常重要的。

技术实现思路

[0003]本公开提供了一种用于消息推送方法、装置、系统电子设备和存储介质。
[0004]根据本公开的一方面,提供了一种消息推送方法,包括:
[0005]获取分布式系统中的任一服务节点生成的至少一个事务消息,并将所述至少一个事务消息缓存至至少一个第一数据库;
[0006]监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;
[0007]从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中;
[0008]将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的服务节点。
[0009]根据本公开的另一方面,提供了一种消息推送系统,包括:
[0010]分布式系统中的至少一个第一服务节点,用于生成至少一个事务消息,并发送所述至少一个事务消息;
[0011]所述分布式系统中的至少一个第二服务节点,用于获取所述至少一个第一服务节点发送的所述至少一个事务消息,并将所述至少一个事务消息缓存至第一数据库;
[0012]所述分布式系统中的至少一个第三服务节点,用于监测所述至少一个第二服务节点中的所述第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;
[0013]所述分布式系统中的至少一个第四服务节点,用于从所述至少一个第三服务节点中的所述第二数据库中的候选消息中,获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中,以将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的第五服务节点。
[0014]根据本公开的又一方面,提供了一种消息推送装置,包括:
[0015]第一获取模块,用于获取分布式系统中的任一服务节点生成的至少一个事务消息;
[0016]缓存模块,用于将所述至少一个事务消息缓存至至少一个第一数据库;
[0017]监测模块,用于监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;
[0018]第二获取模块,用于从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中;
[0019]推送模块,用于将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的服务节点。
[0020]根据本公开的再一方面,提供了一种电子设备,包括:
[0021]至少一个处理器;以及
[0022]与所述至少一个处理器通信连接的存储器;其中,
[0023]所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开上述一方面提出的消息推送方法。
[0024]根据本公开的又一方面,提供了一种计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开上述一方面提出的消息推送方法。
[0025]根据本公开的还一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开上述一方面提出的消息推送方法。
[0026]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0027]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0028]图1为RocketMQ实现事务消息的推送示意图;
[0029]图2为Kafka实现事务消息的推送示意图;
[0030]图3为本公开实施例一所提供的消息推送方法的流程示意图;
[0031]图4为本公开实施例二所提供的消息推送方法的流程示意图;
[0032]图5为本公开实施例中消息生产者和消息服务器的交互过程示意图;
[0033]图6为本公开实施例三所提供的消息推送方法的流程示意图;
[0034]图7为本公开实施例四所提供的消息推送方法的流程示意图;
[0035]图8为本公开实施例五所提供的消息推送方法的流程示意图;
[0036]图9为本公开实施例六所提供的消息推送系统的结构示意图;
[0037]图10为本公开实施例七所提供的消息推送系统的结构示意图;
[0038]图11为本公开实施例八所提供的消息推送系统的结构示意图;
[0039]图12为本公开实施例九所提供的消息推送装置的结构示意图;
[0040]图13示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
[0041]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同
样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0042]相关技术中,可以通过图1中的RocketMQ(是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时、高可靠的消息发布与订阅服务)实现事务消息的推送,或者,通过图2中的Kafka(一种分布式消息队列)实现事务消息的推送。
[0043]其中,图1中的broker是指:分片存储节点,broker master是指:分片存储主节点,broker slave是指:分片存储从节点,broker discovery是指:分片存储节点服务发现机制;Nameserver是指:服务发现服务器。图2中的zookeeper是一个分布式的、开放源码的分布式应用程序协调服务。
[0044]然而上述两种事务消息的推送机制,均需依赖Nameserver进行强一致性的协调,实例迁移往往需要依赖人工介入,运维成本较大。
[0045]并且,需要维护zookeeper集群,对于业务研发团队而言,需要消耗一定的人力,且整个服务都是有状态服务,无法进行快速的水平扩容。
[0046]针对上述至少一种问题,本公开提出一种消息推送方法、装置、电子设备和存储介质。
[0047]下面参考附图描述本公开实施例的消息推送方法、装置本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息推送方法,所述方法包括:获取分布式系统中的任一服务节点生成的至少一个事务消息,并将所述至少一个事务消息缓存至至少一个第一数据库;监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,并将所述目标消息放入目标消息队列中;将所述目标消息队列中的所述目标消息推送至所述分布式系统中订阅所述目标消息的主题的服务节点。2.根据权利要求1所述的方法,其中,所述将所述至少一个事务消息缓存至至少一个第一数据库,包括:针对获取到的每个所述事务消息,将所述事务消息的标识设置为等待,并将标识为等待的所述事务消息存储至所述至少一个第一数据库;向所述任一服务节点发送事务回查请求,其中,所述回查请求用于查询所述事务消息是否能够推送;接收所述任一服务节点发送的事务回查响应,其中,所述事务回查响应是所述任一服务节点响应于所述事务回查请求,根据所述事务消息所依赖的目标事务的执行结果生成的;在所述事务回查响应包含第一指示信息的情况下,根据所述第一指示信息,将所述至少一个第一数据库中的所述事务消息的标识更新为可投递,其中,所述第一指示信息是所述任一服务节点确定所述目标事务执行成功后生成的,用于指示能够推送所述事务消息。3.根据权利要求2所述的方法,其中,所述接收所述任一服务节点发送的回查响应之后,所述方法还包括:在所述事务回查响应包含第二指示信息的情况下,删除所述至少一个第一数据库中的所述事务消息,其中,所述第二指示信息是所述任一服务节点确定所述目标事务执行失败后生成的,用于指示不能推送所述事务消息。4.根据权利要求2所述的方法,其中,所述从所述第二数据库中的候选消息中获取满足第二设定条件的目标消息,包括:基于事务隔离机制,从所述第二数据库中的候选消息中,获取标识为可投递的目标消息。5.根据权利要求1所述的方法,其中,所述监测所述至少一个第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库,包括:监测所述至少一个第一数据库中缓存的事务消息,响应于到达设定时间点,从所述至少一个第一数据库中缓存的事务消息中,获取不高于设定数量的事务消息,并作为所述候选消息;启动第一异步线程;通过所述第一异步线程,将所述候选消息写入所述第二数据库。6.根据权利要求1所述的方法,其中,所述将所述目标消息队列中的目标消息推送至所
述分布式系统中订阅所述目标消息的主题的服务节点,包括:确定所述目标消息队列中各所述目标消息对应的主题;启动第二异步线程;通过所述第二异步线程,将所述目标消息队列中的各所述目标消息推送至订阅各所述目标消息的主题的服务节点。7.根据权利要求6所述的方法,其中,所述通过所述第二异步线程,将所述目标消息队列中的各所述目标消息推送至订阅各所述目标消息的主题的服务节点之后,还包括:针对所述目标消息队列中的任一目标消息,在向订阅所述任一目标消息的目标服务节点推送所述任一目标消息后,统计所述任一目标消息的已推送时长,并将所述任一目标消息的推送状态标记为已推送状态;在所述已推送时长达到所述任一目标消息对应的时长阈值的情况下,若未接收到所述目标服务节点发送的响应消息,则确定所述任一目标消息推送失败,其中,所述响应消息用于指示接收到所述任一目标消息;将所述任一目标消息的推送状态更新为推送失败状态;将推送失败状态的所述任一目标消息重新添加至所述目标消息队列,以重新推送所述任一目标消息。8.根据权利要求7所述的方法,其中,所述方法还包括:确定所述任一目标消息推送失败的次数;根据所述次数,更新所述任一目标消息对应的时长阈值,其中,更新后的所述时长阈值与所述次数成正向关系。9.一种消息推送系统,所述系统包括:分布式系统中的至少一个第一服务节点,用于生成至少一个事务消息,并发送所述至少一个事务消息;所述分布式系统中的至少一个第二服务节点,用于获取所述至少一个第一服务节点发送的所述至少一个事务消息,并将所述至少一个事务消息缓存至第一数据库;所述分布式系统中的至少一个第三服务节点,用于监测所述至少一个第二服务节点中的所述第一数据库中缓存的事务消息,以从所述缓存的事务消息中确定满足第一设定条件的候选消息,并将所述候选消息写入第二数据库;所述分布式系统中的至少一个第四服务节点,用于从所述至少一个第三服务节点中的所述第二数据库中的候选消息中,获取满足第二设定条件...

【专利技术属性】
技术研发人员:白建民
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1