CN113761051A - 消息推送方法、数据获取方法、装置、系统、设备和介质 - Google Patents

消息推送方法、数据获取方法、装置、系统、设备和介质 Download PDF

Info

Publication number
CN113761051A
CN113761051A CN202010628346.1A CN202010628346A CN113761051A CN 113761051 A CN113761051 A CN 113761051A CN 202010628346 A CN202010628346 A CN 202010628346A CN 113761051 A CN113761051 A CN 113761051A
Authority
CN
China
Prior art keywords
target data
database
module
slave
notification message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010628346.1A
Other languages
English (en)
Inventor
张帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202010628346.1A priority Critical patent/CN113761051A/zh
Publication of CN113761051A publication Critical patent/CN113761051A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种消息推送方法、数据获取方法、装置、电子设备和存储介质,所述消息推送方法包括:检测目标数据是否已经同步至从数据库;若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。通过本发明实施例的技术方案,不仅减少了推送数据量,还可确保客户端最终所获取到的目标数据正确有效。

Description

消息推送方法、数据获取方法、装置、系统、设备和介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种消息推送方法、数据获取方法、装置、系统、电子设备和存储介质。
背景技术
随着移动互联网电商的蓬勃发展与广泛普及,越来越多的人开始习惯于网上购物,因此,越来越多的商家通过个性化装修自己的网络店铺吸引更多的顾客。为了追求极致的用户购物体验,同时减少商家装修的工作量,节省商家装修时间,电商平台为商家提供了一套专门用于网络店铺装修的软件,各商家通过该软件对自己的网络店铺进行装修,装修完成时,通过该软件将装修数据发布,而后将装修数据推送到各移动购物终端,使各移动购物终端实现展示装修效果的目的。
为了分担服务器的压力,提高数据可靠性,数据发布端通常采用读写分离技术,即设置两个数据库,分别为主数据库和从数据库,主数据库负责处理事务性的增、改、删操作,从数据库负责处理查询操作。数据库复制被用来把事务性操作导致的数据变更同步到从数据库。目前,商家将装修数据发布至主数据库时,服务端会立即推送消息给各移动购物终端,各移动购物终端基于接收到的消息从从数据库获取全部的装修数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有消息推送方式没有考虑数据发布端所采用的读写分离技术对移动购物终端最终所获取到的数据正确有效的影响,存在各移动购物终端最终所获取到的数据不准确的问题。
发明内容
本发明实施例提供了一种消息推送方法、数据获取方法、装置、系统、电子设备和存储介质,不仅减少了推送数据量,还可确保客户端最终所获取到的目标数据正确有效。
第一方面,本发明实施例提供了一种消息推送方法,包括:
检测目标数据是否已经同步至从数据库;
若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
第二方面,本发明实施例还提供了一种数据获取方法,包括:
接收服务端发送的更新通知消息;
延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
第三方面,本发明实施例还提供了一种消息推送装置,包括:
检测模块,用于检测目标数据是否已经同步至从数据库;
推送模块,用于若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
第四方面,本发明实施例还提供了一种数据获取装置,包括:
接收模块,用于接收服务端发送的更新通知消息;
获取模块,用于延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
第五方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的消息推送方法步骤以及数据获取方法步骤。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的消息推送方法步骤以及数据获取方法步骤。
上述发明中的实施例具有如下优点或有益效果:
通过检测目标数据是否已经同步至从数据库;若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,不仅减少了推送数据量,还可确保客户端最终所获取到的目标数据正确有效。
附图说明
图1是本发明实施例一提供的一种消息推送方法的流程图;
图2是本发明实施例二提供的一种数据获取方法的流程图;
图3是本发明实施例三提供的一种消息推送装置的结构示意图;
图4是本发明实施例四提供的一种数据获取装置的结构示意图;
图5是本发明实施例五提供的一种消息推送系统的结构示意图;
图6是本发明实施例六提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种消息推送方法的流程图,本实施例可适用于服务端对商家发布的针对网络店铺的装修数据向移动购物终端进行推送的应用场景。该方法可以由消息推送装置来执行,该装置可以由软件和/或硬件的方式来实现,并集成于服务器。
如图1所示,该方法具体包括以下步骤:
步骤110、检测目标数据是否已经同步至从数据库。
示例性的,所述检测目标数据是否已经同步至从数据库,包括:
检测在所述主从同步机制的两阶段提交协议2PC过程中,所述目标数据是否已写入从数据库二进制日志binlog;
若所述目标数据已写入二进制日志,则确定所述目标数据已经同步至从数据库。在所述主从同步机制中,每执行一次二进制日志的写入操作,执行一次将二进制日志写入磁盘的操作。在该模式下,若所述目标数据已写入从数据库二进制日志,则表示所述目标数据已经同步至从数据库,其它事务可以来读取所述目标数据了。以MySQL的innodb数据库为例,隔离级别为RR,数据库的配置参数为:binlog_format=row,innodb_flush_log_at_trx_commit=1,sync_binlog=1,表示每执行一次二进制日志的写入操作,执行一次将二进制日志写入磁盘的操作。innodb_flush_log_at_trx_commit和sync_binlog两个参数是控制MySQL磁盘写入策略以及数据安全性的关键参数。如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把缓冲log buffer的数据写入二进制日志,并且刷到磁盘中去。参数sync_binlog=[N]表示每写缓冲多次就同步到磁盘。如果将N设为1,即sync_binlog=1表示采用同步写磁盘的方式来写二进制日志,这时二进制日志的写操作不使用操作系统的缓冲来写,该值默认为0,即采用操作系统机制进行二进制日志的写操作(即缓冲数据同步)。
步骤120、若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作。其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,所述目标数据被同步至所述从数据库需要花费一定的时间,为了确保客户端能够从所述从数据库获取到最新的目标数据,本实施例的技术方案中,在确定所述目标数据已经同步至从数据库时,向客户端推送更新通知消息,告知客户端当前可以从从数据库获取最新的目标数据。
进一步的,所述确定所述目标数据已经同步至从数据库之后、向客户端推送更新通知消息之前,还包括:
采集从数据库的二进制日志;
对所述二进制日志进行解析,以获取目标数据的更新记录;
对所述更新记录进行存储,以使所述客户端基于所述更新通知消息获取所述更新记录,并根据所述更新记录从所述从数据库获取所述目标数据。
以所述目标数据为商家发布的针对网络店铺的装修数据为例,所述更新记录具体指发布装修数据的商家ID、页面ID等。
具体的,所述采集从数据库的二进制日志,包括:
通过从数据库的交互协议,向数据库实例发送日志获取请求dump,数据库实例收到所述日志获取请求时,采集二进制日志。
本实施例的技术方案,通过检测目标数据是否已经同步至从数据库;若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,而不是当目标数据写入主数据库完成时,立即向客户端推送更新通知消息,实现了可确保客户端最终所获取到的目标数据正确有效的目的,同时还减少了向客户端的推送数据量。
实施例二
图2为本发明实施例二提供的一种数据获取方法的流程图,本实施例在上述实施例的基础上,应用于接收服务端发送的更新通知消息的客户端,客户端基于所述更新通知消息获取目标数据的场景。该方法可以由数据获取装置来执行,该装置可以由软件和/或硬件的方式来实现,并集成于客户端。其中与上述实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的数据获取方法具体包括以下步骤:
步骤210、接收服务端发送的更新通知消息。
步骤220、延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
具体的,所述根据所述更新通知消息触发从从数据库获取目标数据的操作,包括:
根据所述更新通知消息获取更新记录;
根据所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据;
其中,服务端在确定所述目标数据已经同步至从数据库之后、向客户端推送所述更新通知消息之前,采集从数据库的二进制日志,对所述二进制日志进行解析,以获取目标数据的更新记录,并对所述更新记录进行存储。以所述目标数据为商家发布的针对网络店铺的装修数据为例,所述更新记录具体指发布装修数据的商家ID、页面ID等。客户端基于所述商家ID、页面ID通过RPC调用从从数据库获取具体的装修数据。数据库的主从同步机制的两阶段提交协议2PC过程包括两个阶段,准备阶段和提交阶段;准备阶段为向主数据库写数据的阶段。提交阶段包括两个步骤,第一个步骤是从数据库的二进制日志binlog的同步操作,这个步骤完成时,表示二进制日志已经写入数据,可以发送给消费端进行消费了,即数据获取端可以来读取数据了;第二个步骤是提交操作,只有提交操作全部完成之后,其它事务才能查询二进制日志binlog所对应的事务产生的数据变更,因此,为了保证各消费端(即客户端)能够准确获取到最新的目标数据,本实施例提供的数据获取方案中,客户端在接收到更新通知消息时,延迟预设时间后根据所述更新通知消息获取更新记录;根据所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据。示例性的,所述预设时间可以是500ms。数据库的主从同步机制的两阶段提交协议2PC过程的第二阶段的第二个步骤提交commit一般花费的时间比较短,且客户端延迟消费预设时间,再加上更新通知消息从推送到更新记录的读取,再到RPC调用需要一定的时间开销,如此可保证数据库的主从已经同步完成,使客户端可以获取到最新的准确目标数据,避免异构分布式系统读取脏数据的风险。
进一步的,在接收到服务端发送的更新通知消息时,所述方法还包括:
对缓存中的数据进行清除,以为目标数据腾出存储空间,做好获取目标数据的准备,为准确、稳定地获取目标数据提供保障,即使消息消费端使用缓存技术,也可以保证消息的正确推送。
本实施例的技术方案,当接收到服务端发送的更新通知消息后,延迟预设时间再根据所述更新通知消息触发从从数据库获取目标数据的操作;考虑了数据库的主从同步机制的两阶段提交协议2PC过程中提交阶段的提交操作所导致的延迟,以及提交操作失败时,数据库进行数据恢复时导致的延迟,从而实现了确定客户端获取正确有效、最新的目标数据的目的。
以下是本发明实施例提供的消息推送装置的实施例,该装置与上述各实施例的消息推送方法属于同一个发明构思,在消息推送装置的实施例中未详尽描述的细节内容,可以参考上述消息推送方法的实施例。
实施例三
图3为本发明实施例三提供的一种消息推送装置的结构示意图,该装置具体包括:检测模块310和推送模块320。
其中,检测模块310,用于检测目标数据是否已经同步至从数据库;推送模块320,用于若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
进一步的,检测模块310具体用于:检测在所述主从同步机制的两阶段提交协议2PC过程中,所述目标数据是否已写入从数据库二进制日志;若所述目标数据已写入二进制日志,则确定所述目标数据已经同步至从数据库。
进一步的,在所述主从同步机制中,每执行一次二进制日志的写入操作,执行一次将二进制日志写入磁盘的操作。
进一步的,所述装置还包括:采集模块,解析模块和存储模块;
所述采集模块用于在确定所述目标数据已经同步至从数据库之后、向客户端推送更新通知消息之前,采集从数据库的二进制日志;
所述解析模块用于对所述二进制日志进行解析,以获取目标数据的更新记录;
所述存储模块,用于对所述更新记录进行存储,以使所述客户端基于所述更新通知消息获取所述更新记录,并根据所述更新记录从所述从数据库获取所述目标数据。
进一步的,所述目标数据包括网络店铺的装修数据。
本实施例的技术方案,通过检测目标数据是否已经同步至从数据库;若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,而不是当目标数据写入主数据库完成时,立即向客户端推送更新通知消息,实现了可确保客户端最终所获取到的目标数据正确有效的目的,同时还减少了向客户端的推送数据量。
本发明实施例所提供的消息推送装置可执行本发明任意实施例所提供的消息推送方法,具备执行消息推送方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种数据获取装置的结构示意图,该装置具体包括:接收模块410和获取模块420。
其中,接收模块410,用于接收服务端发送的更新通知消息;获取模块420,用于延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
进一步的,获取模块420包括:获取单元,用于根据所述更新通知消息获取更新记录;
调用单元,用于根据所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据;其中,服务端在确定所述目标数据已经同步至从数据库之后、向客户端推送所述更新通知消息之前,采集从数据库的二进制日志,对所述二进制日志进行解析,以获取目标数据的更新记录,并对所述更新记录进行存储。
进一步的,所述装置还包括:清除模块,用于对缓存中的数据进行清除。
进一步的,所述目标数据包括网络店铺的装修数据。
本实施例的技术方案,当接收到服务端发送的更新通知消息后,延迟预设时间再根据所述更新通知消息触发从从数据库获取目标数据的操作;考虑了数据库的主从同步机制的两阶段提交协议2PC过程中提交阶段的提交操作所导致的延迟,以及提交操作失败时,数据库进行数据恢复时导致的延迟,从而实现了确定客户端获取正确有效、最新的目标数据的目的。
本发明实施例所提供的数据获取装置可执行本发明任意实施例所提供的数据获取方法,具备执行消息推送方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种消息推送系统的结构示意图,本实施例提供的消息推送系统可适用于服务端对商家发布的针对网络店铺的装修数据向移动购物终端进行推送的应用场景。
如图5所示,所述系统包括:第一业务应用模块510、事件执行模块520、数据库模块530、日志订阅模块540、消息分发模块550和第二业务应用模块560。
其中,第一业务应用模块510用于接收用户的操作指令,并基于所述操作指令向所述事件执行模块520发送目标数据写请求。例如,商家通过个性化装修自己的网络店铺以吸引更多的顾客,为了减少商家装修的工作量,节省商家装修时间,电商平台为商家提供了一套专门用于网络店铺装修的软件,各商家通过该软件对自己的网络店铺进行装修,装修完成时,通过该软件将装修数据发布,所述专门用于网络店铺装修的软件即为所述第一业务应用模块510的一种具体形式。
事件执行模块520执行相关的业务代码,用于根据所述目标数据写请求将所述目标数据写入数据库模块的主数据库master。
数据库模块530包括主数据库master531和从数据库slave532,主数据库531用于对所述事件执行模块520写入的数据进行存储,并将写入数据同步至从数据库532;从数据库532用于对主数据库531的数据进行同步存储,以供第二业务应用模块560读取。在将所述目标数据写入主数据库531后,通过主从同步机制,启动执行将所述目标数据从主数据库531同步至从数据库532的操作。
日志订阅模块540用于当所述目标数据已经同步至从数据库532时,对所述从数据库532的二进制日志进行订阅,并将订阅的二进制日志发送至所述消息分发模块550。
消息分发模块550用于在接收到所述二进制日志时,向第二业务应用模块560推送更新通知消息。
第二业务应用模块560基于所述更新通知消息触发从所述从数据库532获取所述目标数据的操作。
进一步的,如果同一时刻写入主数据库531的压力较大,可以写事件放入任务队列,为任务压力削峰,避免资源(如CPU,内存等)的耗尽。同时,为了减少日志订阅模块540的消息订阅量,一般在事件执行模块520中设置一个代表性操作,可以表示事件执行完毕。以店铺装修页面发布为例,当装修页面数据发布时,发布成功后,将发布的操作记录于发布历史表中,则将记录发布历史表的相关操作作为代表性操作事件,日志订阅模块540只需要订阅发布历史表的相关二进制日志。
示例性的,事件执行模块520包括:任务对列单元,用于当发送至所述事件执行模块的写请求的数量超过阈值时,基于各写请求发送时间的先后顺序对超出所述阈值的写请求进行存储,以降低所述事件执行模块的执行压力。
事件执行模块520还用于:当所述目标数据写入数据库模块530的主数据库531完成时,将所述目标数据的写入操作记录于与所述目标数据对应的更新历史表。对应的,日志订阅模块540用于对从数据库532中与所述更新历史表对应的二进制日志进行订阅。具体的,日志订阅模块540基于设定交互协议(例如MySQL slave的交互协议)向数据库管理实例发送二进制日志获取请求dump,并接收所述数据库管理实例根据所述请求所采集到的二进制日志,将接收到的二进制日志发送至消息分发模块550。
消息分发模块550还用于在向第二业务应用模块560推送更新通知消息之前,对接收到所述二进制日志进行解析,获取更新记录,并对所述更新记录进行存储,以使第二业务应用模块560基于所述更新通知消息获取所述更新记录,并根据所述更新记录从所述从数据库获取所述目标数据。具体的,第二业务应用模块560在接收到所述更新通知消息时,延迟预设时间后(例如延迟500ms)执行获取所述更新记录的操作;根据获取到的所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据。以所述目标数据为商家发布的针对网络店铺的装修数据为例,所述更新记录具体指发布装修数据的商家ID、页面ID等。第二业务应用模块560基于所述商家ID、页面ID通过RPC调用从从数据库获取具体的装修数据。其中,消息分发模块550的一种实现形式可以是Kafka,Kafka是一种高吞吐量的分布式发布订阅消息系统,消息分发模块550包括消息分发单元551和消息队列552,消息分发单元551对接收到二进制日志进行解析,获取更新记录,并将所述更新记录发送到消息队列552,消息队列552接收到更新记录后向第二业务应用模块560发送更新通知消息,告知第二业务应用模块560可以来消费数据了,第二业务应用模块560接收到更新通知消息后,延迟预设时间,再去消费消息队列552中的消息,即所述更新记录。
第二业务应用模块560在接收到所述更新通知消息时,延迟预设时间后(例如延迟500ms)才开始执行获取所述更新记录的操作的原因是:数据库的主从同步机制的两阶段提交协议2PC过程包括两个阶段,准备阶段和提交阶段;准备阶段为向主数据库写数据的阶段。提交阶段包括两个步骤,第一个步骤是从数据库的二进制日志binlog的同步操作,这个步骤完成时,表示二进制日志已经写入数据,可以发送给消费端进行消费了,即数据获取端可以来读取数据了;第二个步骤是提交操作,只有提交操作全部完成之后,其它事务才能查询二进制日志binlog所对应的事务产生的数据变更,因此,为了保证第二业务应用模块560能够准确获取到最新的目标数据,第二业务应用模块560在接收到更新通知消息时,延迟预设时间后根据所述更新通知消息获取更新记录,根据所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据,实现了确保第二业务应用模块560获取到正确有效的目标数据的目的。
进一步的,所述系统还包括:第三业务应用模块570,用于接收第二业务应用模块560发送的远程过程调用协议RPC的调用指令,并基于所述调用指令通过RPC从从数据库532获取所述目标数据。
本实施例提供的一种消息推送系统,通过将读写分离中数据同步与消息推送构建成串行事件的消息推送方案,减少了消息体的带宽占用,同时保证了消息的正确推送。即使在消息产生端使用读写分离技术,或者消息消费端使用缓存等技术,也可以保证消息的正确投递,各消息消费端最终能获取到正确的数据,避免异构分布式系统读取脏数据的风险。
实施例六
图6为本发明实施例六提供的一种设备的结构示意图。图6示出了适于用来实现本发明实施方式的示例性设备12的框图。图6显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个检测模块310和推送模块320)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个检测模块310和推送模块320)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及消息推送,例如实现本发明实施例所提供的一种消息推送方法步骤,该方法包括:
检测目标数据是否已经同步至从数据库;
若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
还实现本发明实施例所提供的一种数据获取方法步骤,该方法包括:
接收服务端发送的更新通知消息;
延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的消息推送方法的技术方案。
实施例七
本实施例七提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的消息推送方法步骤以及数据获取方法步骤,所述消息推送方法包括:
检测目标数据是否已经同步至从数据库;
若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
所述数据获取方法包括:
接收服务端发送的更新通知消息;
延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (16)

1.一种消息推送方法,其特征在于,包括:
检测目标数据是否已经同步至从数据库;
若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使所述客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
2.根据权利要求1所述的方法,其特征在于,所述检测目标数据是否已经同步至从数据库,包括:
检测在所述主从同步机制的两阶段提交协议2PC过程中,所述目标数据是否已写入从数据库二进制日志;
若所述目标数据已写入二进制日志,则确定所述目标数据已经同步至从数据库。
3.根据权利要求1所述的方法,其特征在于,所述确定所述目标数据已经同步至从数据库之后、向客户端推送更新通知消息之前,还包括:
采集从数据库的二进制日志;
对所述二进制日志进行解析,以获取目标数据的更新记录;
对所述更新记录进行存储,以使所述客户端基于所述更新通知消息获取所述更新记录,并根据所述更新记录从所述从数据库获取所述目标数据。
4.一种数据获取方法,其特征在于,包括:
接收服务端发送的更新通知消息;
延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述更新通知消息触发从从数据库获取目标数据的操作,包括:
根据所述更新通知消息获取更新记录;
根据所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据;
其中,服务端在确定所述目标数据已经同步至从数据库之后、向客户端推送所述更新通知消息之前,采集从数据库的二进制日志,对所述二进制日志进行解析,以获取目标数据的更新记录,并对所述更新记录进行存储。
6.一种消息推送装置,其特征在于,包括:
检测模块,用于检测目标数据是否已经同步至从数据库;
推送模块,用于若确定所述目标数据已经同步至从数据库,则向客户端推送更新通知消息,以使客户端基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库。
7.一种数据获取装置,其特征在于,包括:
接收模块,用于接收服务端发送的更新通知消息;
获取模块,用于延迟预设时间后,根据所述更新通知消息触发从从数据库获取目标数据的操作;
其中,在将所述目标数据写入主数据库后,通过主从同步机制,所述目标数据被同步至所述从数据库,当确定所述目标数据已经同步至从数据库,服务端向客户端推送所述更新通知消息。
8.一种消息推送系统,其特征在于,包括:
第一业务应用模块、事件执行模块、数据库模块、日志订阅模块、消息分发模块和第二业务应用模块;
其中,所述第一业务应用模块用于接收用户的操作指令,并基于所述操作指令向所述事件执行模块发送目标数据写请求;
所述事件执行模块用于根据所述目标数据写请求将所述目标数据写入数据库模块的主数据库;
所述数据库模块包括主数据库和从数据库,所述主数据库用于对所述事件执行模块写入的数据进行存储,并将写入数据同步至从数据库;所述从数据库用于对主数据库的数据进行同步存储,以供第二业务应用模块读取;
所述日志订阅模块用于当所述目标数据已经同步至从数据库时,对所述从数据库的二进制日志进行订阅,并将订阅的二进制日志发送至所述消息分发模块;
所述消息分发模块用于在接收到所述二进制日志时,向所述第二业务应用模块推送更新通知消息;
所述第二业务应用模块基于所述更新通知消息触发从所述从数据库获取所述目标数据的操作。
9.根据权利要求8所述的系统,其特征在于,所述事件执行模块包括:任务对列单元,用于当发送至所述事件执行模块的写请求的数量超过阈值时,基于各写请求发送时间的先后顺序对超出所述阈值的写请求进行存储,以降低所述事件执行模块的执行压力。
10.根据权利要求8所述的系统,其特征在于,所述事件执行模块还用于:当所述目标数据写入数据库模块的主数据库完成时,将所述目标数据的写入操作记录于与所述目标数据对应的更新历史表。
11.根据权利要求10所述的系统,其特征在于,所述日志订阅模块用于对所述从数据库中与所述更新历史表对应的二进制日志进行订阅。
12.根据权利要求10所述的系统,其特征在于,所述消息分发模块还用于在向所述第二业务应用模块推送更新通知消息之前,对接收到所述二进制日志进行解析,获取更新记录,并对所述更新记录进行存储,以使所述第二业务应用模块基于所述更新通知消息获取所述更新记录,并根据所述更新记录从所述从数据库获取所述目标数据。
13.根据权利要求12所述的系统,其特征在于,所述第二业务应用模块在接收到所述更新通知消息时,延迟预设时间后执行获取所述更新记录的操作;
根据获取到的所述更新记录通过远程过程调用协议RPC从所述从数据库获取所述目标数据。
14.根据权利要求8-13任一项所述的系统,其特征在于,还包括:第三业务应用模块,用于接收第二业务应用模块发送的远程过程调用协议RPC的调用指令,并基于所述调用指令通过RPC从所述从数据库获取所述目标数据。
15.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的消息推送方法步骤以及如权利要求4-5任一项所述的数据获取方法步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的消息推送方法步骤以及如权利要求4-5任一项所述的数据获取方法步骤。
CN202010628346.1A 2020-07-01 2020-07-01 消息推送方法、数据获取方法、装置、系统、设备和介质 Pending CN113761051A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010628346.1A CN113761051A (zh) 2020-07-01 2020-07-01 消息推送方法、数据获取方法、装置、系统、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010628346.1A CN113761051A (zh) 2020-07-01 2020-07-01 消息推送方法、数据获取方法、装置、系统、设备和介质

Publications (1)

Publication Number Publication Date
CN113761051A true CN113761051A (zh) 2021-12-07

Family

ID=78785511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010628346.1A Pending CN113761051A (zh) 2020-07-01 2020-07-01 消息推送方法、数据获取方法、装置、系统、设备和介质

Country Status (1)

Country Link
CN (1) CN113761051A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344403A (zh) * 2022-07-27 2022-11-15 广州方舟信息科技有限公司 一种基于分布式消息队列的用户权益数据处理方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845383B1 (en) * 2000-06-19 2005-01-18 International Business Machines Corporation System and method for managing concurrent scheduled or on-demand replication of subscriptions
CN103425645A (zh) * 2012-05-14 2013-12-04 阿里巴巴集团控股有限公司 数据库集群单点故障的监控系统及方法
US8725684B1 (en) * 2011-03-31 2014-05-13 Amazon Technologies, Inc. Synchronizing data stores
CN104516966A (zh) * 2014-12-24 2015-04-15 北京奇虎科技有限公司 一种数据库集群的高可用解决方法和装置
CN105069059A (zh) * 2015-07-28 2015-11-18 小米科技有限责任公司 数据库同步方法及装置
CN106294713A (zh) * 2016-08-09 2017-01-04 深圳中兴网信科技有限公司 基于增量日志解析的数据同步方法和数据同步装置
CN107766575A (zh) * 2017-11-14 2018-03-06 中国联合网络通信集团有限公司 读写分离的数据库访问方法及装置
CN108038157A (zh) * 2017-12-05 2018-05-15 北京星河星云信息技术有限公司 主从数据库读写方法、系统、存储装置和服务器
CN109522361A (zh) * 2018-09-27 2019-03-26 中国经济信息社有限公司 一种利用消息总线进行数据库实时同步的方法及系统
CN109582731A (zh) * 2018-10-18 2019-04-05 恒峰信息技术有限公司 一种数据实时同步方法及系统
CN109933594A (zh) * 2019-02-15 2019-06-25 北京大米科技有限公司 获取数据的方法、装置、电子设备及介质
CN110019506A (zh) * 2017-09-21 2019-07-16 阿里巴巴集团控股有限公司 日志记录处理方法和装置

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845383B1 (en) * 2000-06-19 2005-01-18 International Business Machines Corporation System and method for managing concurrent scheduled or on-demand replication of subscriptions
US8725684B1 (en) * 2011-03-31 2014-05-13 Amazon Technologies, Inc. Synchronizing data stores
CN103425645A (zh) * 2012-05-14 2013-12-04 阿里巴巴集团控股有限公司 数据库集群单点故障的监控系统及方法
CN104516966A (zh) * 2014-12-24 2015-04-15 北京奇虎科技有限公司 一种数据库集群的高可用解决方法和装置
CN105069059A (zh) * 2015-07-28 2015-11-18 小米科技有限责任公司 数据库同步方法及装置
CN106294713A (zh) * 2016-08-09 2017-01-04 深圳中兴网信科技有限公司 基于增量日志解析的数据同步方法和数据同步装置
CN110019506A (zh) * 2017-09-21 2019-07-16 阿里巴巴集团控股有限公司 日志记录处理方法和装置
CN107766575A (zh) * 2017-11-14 2018-03-06 中国联合网络通信集团有限公司 读写分离的数据库访问方法及装置
CN108038157A (zh) * 2017-12-05 2018-05-15 北京星河星云信息技术有限公司 主从数据库读写方法、系统、存储装置和服务器
CN109522361A (zh) * 2018-09-27 2019-03-26 中国经济信息社有限公司 一种利用消息总线进行数据库实时同步的方法及系统
CN109582731A (zh) * 2018-10-18 2019-04-05 恒峰信息技术有限公司 一种数据实时同步方法及系统
CN109933594A (zh) * 2019-02-15 2019-06-25 北京大米科技有限公司 获取数据的方法、装置、电子设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张伟东;王海凤;张伟天;: "基于MySQL数据库复制技术的数据同步分析与实现", 信息与电脑(理论版), no. 14, 25 July 2018 (2018-07-25) *
霍祥伟;: "实现灾备数据库同步", 网络安全和信息化, no. 01, 5 January 2020 (2020-01-05) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344403A (zh) * 2022-07-27 2022-11-15 广州方舟信息科技有限公司 一种基于分布式消息队列的用户权益数据处理方法

Similar Documents

Publication Publication Date Title
JP6865219B2 (ja) 連続クエリ処理におけるイベントバッチ処理、出力シーケンス化、およびログベースの状態記憶
CN110262807B (zh) 集群创建进度日志采集系统、方法和装置
CN105787077B (zh) 数据同步方法和装置
CN110753084A (zh) 上链数据读取方法、缓存服务器及计算机可读存储介质
CN111309747A (zh) 数据同步方法、系统和装置
CN109241128B (zh) 一种过期事件自动触发方法及系统
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
CN111259022A (zh) 一种信息同步方法、同步系统、计算机设备和介质
WO2024041022A1 (zh) 数据库表变更方法、装置、设备和存储介质
CN111338834B (zh) 数据存储方法和装置
CN114676199A (zh) 一种同步方法、同步系统、计算机设备和存储介质
CN113127057A (zh) 多任务并行执行的方法和装置
CN112948498A (zh) 一种分布式系统全局标识的生成方法和装置
CN113761051A (zh) 消息推送方法、数据获取方法、装置、系统、设备和介质
CN113986936A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113760977A (zh) 一种信息查询方法、装置、设备及存储介质
CN114584618A (zh) 信息交互方法、装置、设备、存储介质和系统
CN111581227A (zh) 事件推送方法、装置、计算机设备及存储介质
CN112115149A (zh) 一种提供数据的方法和装置
CN111405015B (zh) 一种数据处理方法、装置、设备及存储介质
CN114036218A (zh) 一种数据模型切换方法、装置、服务器和存储介质
CN113760920A (zh) 一种数据同步方法、装置、电子设备和存储介质
CN110309121B (zh) 日志处理方法及装置、计算机可读介质和电子设备
CN111240810A (zh) 一种事务管理方法、装置、设备和存储介质
CN112860762A (zh) 用于检测时间段重叠的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination