CN116501515A - 信息同步方法、装置、电子设备及存储介质 - Google Patents

信息同步方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116501515A
CN116501515A CN202310383171.6A CN202310383171A CN116501515A CN 116501515 A CN116501515 A CN 116501515A CN 202310383171 A CN202310383171 A CN 202310383171A CN 116501515 A CN116501515 A CN 116501515A
Authority
CN
China
Prior art keywords
target service
message
service
data
target
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
CN202310383171.6A
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 Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet 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 Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202310383171.6A priority Critical patent/CN116501515A/zh
Publication of CN116501515A publication Critical patent/CN116501515A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/546Message passing systems or structures, e.g. queues
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开关于一种信息同步方法、装置、电子设备及存储介质,该方法包括:从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;向所述对端业务系统发送所述目标业务消息。本公开通过向对端业务系统发送目标业务消息,实现了在信息未同步的情况下的数据补偿,从而保证了对端业务系统和业务系统的信息同步。

Description

信息同步方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种信息同步方法、装置、电子设备及存储介质。
背景技术
在互联网业务中,分布式微服务已成为业界广泛采用的系统架构方案。在微服务架构中,多服务间协作通讯、分布式事务是关键技术方案。如何保证多个服务之间的信息同步是不容忽视的一个问题。
图1示出了相关技术中保证信息同步的方法的流程示意图。其中,利用RocketMQ(分布式消息列队)的事务消息(Transactional Message)保证信息同步。然而,此种方法需要进行多次网络通信,存在服务响应耗时较长、服务可用性低等缺点。
发明内容
为克服相关技术中存在的问题,本公开提供一种信息同步方法、装置、电子设备及存储介质。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种信息同步方法,包括:
从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;
根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;
在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;
向所述对端业务系统发送所述目标业务消息。
可选地,所述目标业务数据和所述目标业务消息携带相同的目标业务标识;
所述根据所述目标业务数据,查询数据库中是否存在目标业务消息,包括:
获取所述目标业务数据的目标业务标识;
获取所述数据库中的各业务消息的业务标识;
根据所述各业务消息的业务标识中是否包括所述目标业务标识,确定所述数据库中是否存在所述目标业务消息。
可选地,所述数据队列为延迟队列,所述延迟队列的延迟时长从所述目标业务数据存储至所述延迟队列的时间开始计时;
所述从数据队列中获取目标业务数据,包括:
在到达所述延迟队列的延迟时长,从所述延迟队列中获取所述目标业务数据。
可选地,在所述从数据队列中获取目标业务数据之前,还包括:
获取所述业务系统写入业务数据库的所述目标业务数据;
将所述目标业务数据存储至所述数据队列。
可选地,在所述查询数据库中是否存在目标业务消息之前,还包括:
获取消息服务器本地存储的已发送给所述对端业务系统的所述目标业务消息,所述目标业务消息是所述业务系统根据所述目标业务产生并推送给所述消息服务器的业务消息;
将获取到的所述目标业务消息存储在所述数据库中。
可选地,在获取所述消息服务器本地的所述目标业务消息失败的情况下,还包括:
向所述消息服务器发送重试请求;
获取所述消息服务器根据所述重试请求,重新发送的所述目标业务消息。
可选地,在所述数据库中不存在所述目标业务消息的情况下,还包括:
发出告警消息,所述告警消息用于提示出现故障。
根据本公开实施例的第二方面,提供一种信息同步装置,包括:
获取模块,被配置为从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;
查询模块,被配置为根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;
生成模块,被配置为在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;
发送模块,被配置为向所述对端业务系统发送所述目标业务消息。
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的信息同步方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面所述的信息同步方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的信息同步方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开中,从数据队列中获取业务系统执行目标业务所产生的目标业务数据,并根据目标业务数据查询数据库中是否存在目标业务消息,其中,数据库用于存储已实现信息同步的业务消息,目标业务消息是用于对端业务系统实现与业务系统的信息同步的消息。在数据库中不存在目标业务消息,证明对端业务系统没有实现和业务系统的信息同步,因此,根据目标业务数据,生成目标业务消息,并将生成的目标业务消息发送给对端业务系统,以让对端业务系统根据目标业务消息,实现与业务系统的信息同步。如此,通过向对端业务系统发送目标业务消息,实现了在信息未同步的情况下的数据补偿,从而保证了对端业务系统和业务系统之间的信息同步。并且,此种信息同步方法,无需多次进行网络通信,也不会影响业务系统对各业务的执行,具有服务响应耗时较短、服务可用性高等优点。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1示出了相关技术中实现信息同步的方法的流程示意图;
图2是根据一示例性实施例示出的一种信息同步方法的流程图;
图3是根据一示例性实施例示出的一种信息同步方法的流程示意图;
图4是根据一示例性实施例示出的一种信息同步装置的框图;
图5是根据一示例性实施例示出的一种用于信息同步的装置的框图;
图6是根据一示例性实施例示出的一种用于信息同步的装置的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
事务消息是为了解决消息生产者(MQ Producer)与消息消费者(MQ Consumer)的信息同步问题的消息,主要是适用于异步更新的场景,并且对数据实时性要求不高的地方。事务消息和普通消息的区别在于事务消息发送成功后,处于prepared(准备)状态,不能被消息消费者进行消费,等到事务消息的状态更改为可消费状态后,消息消费者才可以监听到次消息。分布式消息列队(RocketMQ)的事务消息是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败,从而达到分布式事务的信息同步。
如图1所示,RocketMQ的事务消息可以被认为是一个两阶段投递,在事务开始的时候会先发送一个半消息给消息服务器(MQ Server)。半消息是指这个消息此时对消息消费者是不可见的,而且也不存在于真正要发送的队列中,而是存在于一个特殊队列中。发送完半消息之后再执行本地事务,再根据本地事务的执行结果来决定是向消息服务器发送投递消息,还是发送回滚消息。在向消息服务器发送投递消息后,消息服务器将半消息恢复到正常要发送的队列中,这样消息消费者就可以消费这条消息了。在向消息服务器发送回滚消息后,消息服务器将回滚事务,这样消息消费者就无法消费这条消息。
在断网或者是消息生产者应用重启的特殊情况下,若消息服务器未收到消息生产者提交的二次确认结果,或消息服务器收到的二次确认结果为未知状态,消息服务器会定时向消息生产者进行回查。具体地,消息生产者需要暴露一个接口,消息服务器通过这个接口可以得知事务是否执行成功,没成功就返回未知,因为有可能事务还在执行,会进行多次查询。消息生产者收到消息回查后,需要检查对应消息的本地事务执行的最终结果。消息生产者根据检查得到的本地事务的最终状态再次提交投递消息或回滚消息,消息服务器根据接收到的投递消息或回滚消息,对半事务消息进行处理。
可以看出,图1所示的技术方案,一次消息发送需要多次网络通信,增加了服务响应耗时;业务处理服务需要实现消息状态回查逻辑,在消息服务端故障时,大量回查会显著增加应用服务以及数据库的资源占用,影响服务可用性;消息服务端故障强阻塞业务,也会降低服务可用性。因此,此种技术方案存在服务响应耗时较长、服务可用性低等缺点。
为了解决上述技术问题,本公开实施例提出了一种信息同步方法,该方法通过数据核对和消息补偿,实现了业务数据与业务消息的同步。
本公开实施例的信息同步方法可以用于计算机、手机、平板电脑、服务器等电子设备中,服务器可以包括物理服务器、云服务器、服务器集群等。为了便于描述,后文以目标服务器为本公开实施例的信息同步方法的执行主体进行描述。目标服务器是独立于业务系统、消息服务器和对端业务系统的服务器,目标服务器主要用于根据目标业务数据和目标业务消息进行数据核对,并在核对不一致的情况下,通过向对端业务系统发送目标业务消息进行数据补偿,以保证业务系统和对端业务系统之间的信息同步。
图2是根据一示例性实施例示出的一种信息同步方法的流程图,如图2所示,该信息同步方法包括以下步骤:
在步骤S11中,从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据。
目标业务可以根据实际业务场景进行设置,是需要业务系统和对端业务系统共同完成的业务;业务系统执行目标业务是指业务系统执行目标业务中由业务系统负责的业务;对端业务系统执行目标业务是指对端业务系统执行目标业务中由对端业务系统负责的业务。目标业务数据是业务系统执行目标业务过程中产生的各种痕迹或信息转化为的数据。
例如,第一平台的数据表A和第二平台的数据表B需要保持信息同步,目标业务可以为数据表A进行更新后,数据表B进行相应更新;业务系统为第一平台的业务系统,对端业务系统为第二平台的业务系统;则业务系统执行目标业务是指第一平台的业务系统对数据表A进行更新,对端业务系统执行目标业务是指第二平台的业务系统对数据表B进行相应更新;目标业务数据是对第一平台的业务系统对数据表A进行更新这一操作进行记录的数据。
业务系统可以将目标业务数据写入业务数据库。目标服务器从业务数据库获取到目标业务数据,并将目标业务数据存储至目标服务器内的数据队列。在需要进行数据核对的情况下,从数据队列中获取目标业务数据。
根据各个业务的重要程度、优先级等,可以将各个业务的业务数据存储在同一数据队列中,也可以将各个业务的业务数据存储在该业务独占的数据队列中。
在步骤S12中,根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步。
目标业务消息和目标业务数据二者相匹配,都包含了目标业务的信息和目标业务标识,区别在于目标业务数据还包括业务系统执行了目标业务的信息,而目标业务消息还包括指示对端业务系统执行目标业务的信息。其中,目标业务消息和目标业务数据二者相匹配是指二者可以保持信息同步。
沿用前文的例子,若目标业务为数据表A中的第一数值增加5,数据表B中的第二数值相应减少5,则目标业务数据包括数据表A中的第一数值增加5的信息,目标业务消息包括指示数据表B中的第二数值减少5的信息,如此,目标业务数据和目标业务消息二者相匹配,可以保持业务系统和端业务系统之间的信息同步。
本公开实施例中的目标业务消息并非事务消息,而是普通消息。目标业务消息是用于指示对端业务系统实现与业务系统的信息同步的消息,对端业务系统在接收到目标业务消息后,会根据目标业务消息执行目标业务,以实现与业务系统的信息同步。
业务系统在执行目标业务后,生成目标业务消息,并将目标业务消息发送至消息服务器,消息服务器将目标业务消息发送给对端业务系统,对端业务系统根据目标业务消息执行目标业务。
沿用前文的例子,业务系统在对数据表A中的第一数值增加5之后,会生成目标业务消息,目标业务消息包括指示数据表B中的第二数值减少5的信息;业务系统将目标业务消息发送至消息服务器,消息服务器将目标业务消息发送给对端业务系统;对端业务系统接收到目标业务消息后,执行为数据表B中的第二数值减少5的操作。
消息服务器在将目标业务消息发送给对端业务系统后,还会将目标业务消息保存在消息服务器本地。目标服务器作为目标业务消息的消费者,从消息服务器处获取目标业务消息,并将获取到的业务消息存储在目标服务器内的数据库中。
若数据库中存在目标业务消息,则证明目标业务消息已发送给了对端业务系统,对端业务系统会执行目标业务以保证与业务系统的信息同步。因此,数据库中存储的都是已实现了信息同步的业务消息。未实现信息同步的业务消息是指消息服务器还未发送给对端业务系统的业务消息,因为还未发送给对端业务系统,因此对端业务系统也无法执行目标业务以实现信息同步。并且,消息服务器未发送给对端业务系统的业务消息,将无法被目标服务器进行消费,因此,无法被存储到目标服务器的数据库中。
若根据目标业务数据,在数据库中查询到了目标业务消息,则证明业务系统和对端业务系统已实现了关于目标业务的信息同步;若根据目标业务数据,在数据库中未查询到目标业务消息,则证明业务系统和对端业务系统还未实现关于目标业务的信息同步。
可选地,目标服务器中用于存储已实现信息同步的业务消息的数据库可以为分布式数据库中的访问性能较好,分布式数据库可以为clickhouse(一种列式存储数据库)等。在需要进行数据核对时,目标服务器根据业务数据,从分布式数据库中获取该业务数据对应的目标业务消息。
在步骤S13中,在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息。
数据库中不存在目标业务消息,表征数据核对不一致。本公开实施例所指的数据核对不一致,通常是指仅仅能获取到目标业务数据,而无法获取到目标业务消息。因为若不存在目标业务数据,则业务系统没有执行目标业务,因此也不会存在目标业务消息。而存在目标业务数据,却出现数据核对不一致的情况,可能是业务系统未成功向消息服务器发送业务消息,导致目标服务器无法从消息服务器处获取到业务消息;也可能是消息服务器未成功向对端业务系统发送业务消息,此种情况下目标服务器也无法从消息服务器处获取到业务消息。
在数据库中不存在目标业务消息的情况下,则证明业务系统和对端业务系统还未实现关于目标业务的信息同步。因此,目标服务器可以直接向对端业务系统发送目标业务消息进行消息补偿,以保证对端业务系统可以和业务系统之间实现信息同步。
为了向对端业务系统发送目标业务消息进行消息补偿,目标服务器需要根据获取到的目标业务数据,生成目标业务消息。因为目标业务数据和目标业务消息二者是相匹配的,都包含了目标业务的信息,因此,可以根据目标业务数据生成目标业务消息。
沿用前文的例子,因为第一平台的数据表A和第二平台的数据表B需要保持信息同步,因此,在目标业务数据包括数据表A中的第一数值增加5的信息的情况下,可以根据目标业务数据生成如下目标业务消息:指示数据表B中的第二数值减少5。
在步骤S14中,向所述对端业务系统发送所述目标业务消息。
目标服务器在生成目标业务消息后,则可以直接将目标业务消息发送给对端业务系统,以指示对端业务系统执行目标业务,以保证对端业务系统和业务系统之间的信息同步。
因为目标服务器是独立于业务系统、消息服务器和对端业务系统的服务器,因此,目标服务器进行数据核对,以及在数据核对不一致的情况下向对端业务系统发送目标业务消息进行数据补偿,都不会影响业务系统、消息服务器和对端服务器执行自身的各业务。
采用本公开实施例的技术方案,在数据库中不存在目标业务消息,证明对端业务系统没有实现和业务系统的信息同步。通过向对端业务系统发送目标业务消息,实现了在数据不一致的情况下的数据补偿,从而保证了对端业务系统和业务系统之间的信息同步。并且,此种信息同步方法,无需多次进行网络通信,也不会影响业务系统对各业务的执行,具有服务响应耗时较短、服务可用性高等优点。
可选地,在上述技术方案的基础上,目标业务数据和目标业务消息携带相同的目标业务标识。根据目标业务数据,查询数据库中是否存在目标业务消息,可以包括:获取所述目标业务数据的目标业务标识;获取所述数据库中的各业务消息的业务标识;根据所述各业务消息的业务标识中是否包括所述目标业务标识,确定所述数据库中是否存在所述目标业务消息。
每个业务的业务标识可以是根据预设规则自动生成的唯一标识,因此,将目标业务数据的目标业务标识,与数据库中的各个业务消息所携带的业务标识进行对比,可以确定数据库中是否存在目标业务消息。
在数据库中的一个业务消息所携带的业务标识与目标业务数据携带的目标业务标识一致的情况下,则该业务消息为目标业务消息,因此,数据库中存在目标业务消息,证明业务系统和对端业务系统已实现了关于目标业务的信息同步,因此,无需再向对端业务系统发送目标业务消息。
可选地,在根据数据队列中的目标业务数据和数据库中的目标业务消息,确认了业务系统和对端业务系统已实现了关于目标业务的信息同步的情况下,可以将数据队列中的目标业务数据和数据库中的目标业务消息进行删除。
在数据库中的没有业务消息所携带的业务标识与目标业务数据携带的目标业务标识一致的情况下,则数据库中不存在目标业务消息,证明业务系统和对端业务系统还未实现关于目标业务的信息同步。因此,需要根据目标业务数据生成目标业务消息,并向对端业务系统发送目标业务消息,以实现业务系统和对端业务系统关于目标业务的信息同步。
如此,根据目标业务数据携带的目标业务标识,可以快速确认数据库中是否存在目标业务消息,从而确认业务系统和对端业务系统之间是否实现了关于目标业务的信息同步。进而,在业务系统和对端业务系统还未实现关于目标业务的信息同步的情况下,目标服务器可以通过向对端业务系统发送目标业务消息,实现业务系统和对端业务系统关于目标业务的信息同步。
可选地,在上述技术方案的基础上,因为数据核对并无严格的时序要求,因此,可以延迟一定时间再进行数据核对。
存储目标业务数据的数据队列可以为延迟队列,延迟队列的延迟时长从目标业务数据存储至该延迟队列的时间开始计时。从数据队列中获取目标业务数据,可以是在到达延迟队列的延迟时长时,自动从延迟队列中获取目标业务数据,并进行根据目标业务数据查询数据库中是否存在目标业务消息等后续操作。
如此,利用延迟队列存储目标业务数据,实现数据核对的延迟实现,避免了目标业务消息的传输延迟导致在根据目标业务数据查询数据库中是否存在目标业务消息时,消息服务器实际已将目标业务消息发送给了对端业务系统,但目标服务器还未将目标业务消息存储至数据库中,因此无法从数据库中查询到目标业务消息的情况,避免了目标服务器和消息服务器都向对端业务系统发送目标业务消息的情况。
可以理解的是,若出现因为目标业务消息的传输延迟或者其它原因,导致消息服务器实际已将目标业务消息发送给了对端业务系统的情况下,目标服务器也向对端业务系统发送了目标业务消息,因为每条业务消息都具有对应业务的业务标识,因此对端业务系统在接收到多条具有相同的业务标识的情况下,仅仅会执行一次该业务消息对应的业务。因此,即使目标服务器和消息服务器都向对端业务系统发送了目标业务消息,对端业务系统也只会执行一次目标业务。
可选地,在上述技术方案的基础上,在目标服务器从数据队列中获取目标业务数据之前,业务系统会先将目标业务数据写入业务数据库。
目标服务器从业务数据库中获取目标业务数据,并将获取到的目标业务数据存储至数据队列中。在需要进行数据核对时,目标服务器再从数据队列中获取业务数据。
目标服务器可以是通过Binlog(二进制日志)从业务数据库获取业务数据,对业务系统完全透明,做到业务代码零侵入。
如此,目标服务器不会对业务系统执行的业务造成影响。即使目标服务器出错,也不会影响业务系统执行业务。相应地,即使业务系统出错,也不会影响目标服务器进行数据核对和数据补偿,保证了信息同步。
可选地,在上述技术方案的基础上,目标服务器在查询数据库中是否存在目标业务消息之前,业务系统会根据目标业务产生目标业务消息,并将目标业务消息推送至消息服务器。消息服务器将业务消息发送给对端业务系统,对端业务系统根据目标业务消息执行目标业务。
消息服务器还会将已发送给对端业务系统的目标业务消息存储在消息服务器本地。目标服务器作为消息消费者,从消息服务器处获取目标业务消息,并将获取到的目标业务消息存储在目标服务器内部或外部的数据库中。在需要进行数据核对时,目标服务器再从数据库中获取目标业务消息。
如此,先将目标业务消息进行存储,在需要进行数据核对时再从数据库中获取目标业务消息,可以实现延迟核对,从而减少目标服务器和消息服务器都向对端业务系统发送业务消息的情况。
可选地,在上述技术方案的基础上,目标服务器在获取消息服务器本地存储的目标业务消息失败的情况下,可以向消息服务器发送重试请求;根据重试请求,重新从消息服务器处获取目标业务消息。
目标服务器在获取目标业务消息失败的情况下,可以向消息服务器发送重试请求,重试请求表征目标服务器未接收到目标业务消息。消息服务器在接收到重试请求后,延迟一段间向目标服务器发送目标业务消息。若消息服务器再次接收到目标服务器发送的针对相同目标业务消息的重试请求,证明目标服务器从消息服务器获取目标业务消息又失败了,可以再延迟一段时间向目标服务器发送业务消息。其中,每次延迟的时间可以根据需求进行设置,可以设置延迟的时间递增。
消息服务器在多次接收到目标服务器发送的针对同一目标业务消息的重试请求,可以将该目标业务消息放入死信队列。目标业务消息是不会被丢弃的。
如此,仅需依赖普通消息的简单的消息重试机制,即可确保目标服务器最终获取到目标业务消息;而无需如事务消息,需要与业务系统进行多次网络通信。因此,本公开实施例解决了事务消息需要进行多次网络通信,造成的服务响应耗时较长的技术问题。此外,消息服务器在接收到针对相同目标业务消息的重试请求,每次延迟的时间递增,可以避免当前时间段网络状况不好,因此在当前时间段多次重新向目标服务器都会失败,占用过多资源的情况。
可选地,目标服务器在根据目标业务数据,查询数据库中不存在目标业务消息的情况下,证明业务系统和对端业务系统还未实现关于目标业务的信息同步。
业务系统和对端业务系统还未实现关于目标业务信息同步,可能是出现了网络或设备出现了故障,因此,可以发出用于提示出现故障的告警消息,以提醒相关人员其中可能出现故障,以便相关人员尽快进行故障排除。
其中,发出告警消息,可以是直接发出提示音;也可以是设置一个告警灯,通过点亮告警灯来发出告警消息;也可以是预先设置了邮箱地址,向该邮箱地址发送包含告警消息的邮件。本公开实施例对如何发出告警消息不作限制。
如此,通过发出告警消息,可以提醒相关人员其中可能出现错误,以便相关人员尽快进行故障排除。
图3是根据一示例性实施例示出的一种信息同步信息同步方法的流程示意图。其中,数据接收、数据存储和数据核对都由目标服务器实现。
业务系统在执行目标业务后,会将目标业务的目标业务数据写入业务数据库,目标服务器接收目标业务数据,并将目标业务数据进行存储。业务系统还会根据目标业务生成目标业务消息,并将目标业务消息推送至消息服务器。目标服务器可以从消息服务器处消费目标业务消息,并将目标业务消息进行存储。
在达到数据核对的时间时,目标服务器根据存储的目标业务数据和目标业务消息进行数据核对。在核对不一致的情况下,发出告警消息和进行数据补偿。其中,数据补偿是指目标服务器根据目标业务数据生成目标业务消息,并将目标业务消息发送至对端业务系统。
如此,无需进行多次反复的网络通信,即可保证信息同步。且在数据核对不一致的情况下,可以直接进行数据补偿。目标服务器与业务系统相互独立,目标服务器对业务系统无侵入性,即使目标服务器出错,也不会影响业务系统对业务的执行。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
图4是根据一示例性实施例示出的一种信息同步装置的框图,参照图4,该装置包括获取模块41、查询模块42、生成模块43和发送模块44。
获取模块41,被配置为从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;
查询模块42,被配置为根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;
生成模块43,被配置为在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;
发送模块44,被配置为向所述对端业务系统发送所述目标业务消息。
可选地,所述目标业务数据和所述目标业务消息携带相同的目标业务标识;所述查询模块42包括:
目标标识获取单元,被配置为获取所述目标业务数据的目标业务标识;
标识获取单元,被配置为获取所述数据库中的各业务消息的业务标识;
确定单元,被配置为根据所述各业务消息的业务标识中是否包括所述目标业务标识,确定所述数据库中是否存在所述目标业务消息。
可选地,所述数据队列为延迟队列,所述延迟队列的延迟时长从所述目标业务数据存储至所述延迟队列的时间开始计时;所述获取模块41包括:
获取单元,被配置为在到达所述延迟队列的延迟时长,从所述延迟队列中获取所述目标业务数据。
可选地,在所述从数据队列中获取目标业务数据之前,还包括:
数据获取模块,被配置为获取所述业务系统写入业务数据库的所述目标业务数据;
数据存储模块,被配置为将所述目标业务数据存储至所述数据队列。
可选地,在所述查询数据库中是否存在目标业务消息之前,还包括:
消息获取模块,被配置为获取消息服务器本地存储的已发送给所述对端业务系统的所述目标业务消息,所述目标业务消息是所述业务系统根据所述目标业务产生并推送给所述消息服务器的业务消息;
消息存储模块,被配置为将获取到的所述目标业务消息存储在所述数据库中。
可选地,在获取所述消息服务器本地的所述目标业务消息失败的情况下,还包括:
请求发送模块,被配置为向所述消息服务器发送重试请求;
重新发送模块,被配置为获取所述消息服务器根据所述重试请求,重新发送的所述目标业务消息。
可选地,在所述数据库中不存在所述目标业务消息的情况下,还包括:
告警模块,被配置为发出告警消息,所述告警消息用于提示出现故障。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种用于信息同步的装置500的框图。例如,装置500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理
参照图5,装置500可以包括以下一个或多个组件:处理组件502,存储器504,电力组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述信息同步方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在装置500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述装置500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当装置500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当装置500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为装置500提供各个方面的状态评估。例如,传感器组件514可以检测到装置500的打开/关闭状态,组件的相对定位,例如所述组件为装置500的显示器和小键盘,传感器组件514还可以检测装置500或装置500一个组件的位置改变,用户与装置500接触的存在或不存在,装置500方位或加速/减速和装置500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述信息同步方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由装置500的处理器520执行以完成上述信息同步方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图6是根据一示例性实施例示出的一种用于信息同步的装置600的框图。例如,装置600可以被提供为一服务器。参照图6,装置600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如计算机程序产品。存储器632中存储的计算机程序产品可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行上述信息同步方法。
装置600还可以包括一个电源组件626被配置为执行装置600的电源管理,一个有线或无线网络接口650被配置为将装置600连接到网络,和一个输入输出(I/O)接口658。装置600可以操作基于存储在存储器632的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种信息同步方法,其特征在于,包括:
从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;
根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;
在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;
向所述对端业务系统发送所述目标业务消息。
2.根据权利要求1所述的方法,其特征在于,所述目标业务数据和所述目标业务消息携带相同的目标业务标识;
所述根据所述目标业务数据,查询数据库中是否存在目标业务消息,包括:
获取所述目标业务数据的目标业务标识;
获取所述数据库中的各业务消息的业务标识;
根据所述各业务消息的业务标识中是否包括所述目标业务标识,确定所述数据库中是否存在所述目标业务消息。
3.根据权利要求1所述的方法,其特征在于,所述数据队列为延迟队列,所述延迟队列的延迟时长从所述目标业务数据存储至所述延迟队列的时间开始计时;
所述从数据队列中获取目标业务数据,包括:
在到达所述延迟队列的延迟时长,从所述延迟队列中获取所述目标业务数据。
4.根据权利要求1所述的方法,其特征在于,在所述从数据队列中获取目标业务数据之前,还包括:
获取所述业务系统写入业务数据库的所述目标业务数据;
将所述目标业务数据存储至所述数据队列。
5.根据权利要求1所述的方法,其特征在于,在所述查询数据库中是否存在目标业务消息之前,还包括:
获取消息服务器本地存储的已发送给所述对端业务系统的所述目标业务消息,所述目标业务消息是所述业务系统根据所述目标业务产生并推送给所述消息服务器的业务消息;
将获取到的所述目标业务消息存储在所述数据库中。
6.根据权利要求5所述的方法,其特征在于,在获取所述消息服务器本地的所述目标业务消息失败的情况下,还包括:
向所述消息服务器发送重试请求;
获取所述消息服务器根据所述重试请求,重新发送的所述目标业务消息。
7.根据权利要求1-6任一所述的方法,其特征在于,在所述数据库中不存在所述目标业务消息的情况下,还包括:
发出告警消息,所述告警消息用于提示出现故障。
8.一种信息同步装置,其特征在于,包括:
获取模块,被配置为从数据队列中获取目标业务数据,所述目标业务数据是业务系统执行目标业务所产生的数据;
查询模块,被配置为根据所述目标业务数据,查询数据库中是否存在目标业务消息,其中,所述数据库用于存储已实现信息同步的业务消息,所述目标业务消息用于指示对端业务系统实现与所述业务系统的信息同步;
生成模块,被配置为在所述数据库中不存在所述目标业务消息的情况下,根据所述目标业务数据,生成所述目标业务消息;
发送模块,被配置为向所述对端业务系统发送所述目标业务消息。
9.一种电子设备,其特征在于,包括:处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的信息同步方法。
10.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的信息同步方法。
CN202310383171.6A 2023-04-11 2023-04-11 信息同步方法、装置、电子设备及存储介质 Pending CN116501515A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310383171.6A CN116501515A (zh) 2023-04-11 2023-04-11 信息同步方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310383171.6A CN116501515A (zh) 2023-04-11 2023-04-11 信息同步方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116501515A true CN116501515A (zh) 2023-07-28

Family

ID=87315941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310383171.6A Pending CN116501515A (zh) 2023-04-11 2023-04-11 信息同步方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116501515A (zh)

Similar Documents

Publication Publication Date Title
CN106598488B (zh) 分布式数据读取方法及装置
CN109274510B (zh) 消息处理方法、装置、客户端、服务器及存储介质
CN113177093B (zh) 数据同步方法及装置、电子设备和存储介质
CN106713127B (zh) 即时聊天记录的获取及处理方法和装置
US11184305B2 (en) Method and apparatus for updating group member data, and terminal, system and storage medium
CN106231093A (zh) 闹钟提醒方法及装置
CN109302341B (zh) 即时通信方法、装置、电子设备及存储介质
CN113946443A (zh) 边缘设备管理及主动注册方法、装置和电子设备
CN111241134B (zh) 一种数据处理方法及装置
CN111181844A (zh) 消息处理方法、装置及介质
CN107463419B (zh) 应用重启方法、装置及计算机可读存储介质
CN114721710A (zh) 版本控制方法、装置及存储介质
CN113709235A (zh) 设备注册方法及装置、电子设备和存储介质
US20210021720A1 (en) Information processing method, information processing apparatus, and non-transitory recording medium storing instructions for executing an information processing method
CN110071959B (zh) 定时同步第三方国标资源的方法及装置
CN110908814A (zh) 消息处理方法、装置、电子设备及存储介质
CN116501515A (zh) 信息同步方法、装置、电子设备及存储介质
CN107172199B (zh) 一种移动终端的状态更新方法及装置
CN111723353A (zh) 基于人脸识别的身份认证方法、装置、终端及存储介质
CN112883314B (zh) 一种请求处理方法及装置
CN111290882B (zh) 数据文件备份方法、数据文件备份装置及电子设备
CN107734072B (zh) 推送信息的处理方法及装置
CN111526084A (zh) 信息处理方法、装置、设备及存储介质
CN113986577B (zh) 基于定时器的数据处理方法、装置及设备
CN114143260B (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