CN108664520B - 维护数据一致性的方法、装置、电子设备和可读存储介质 - Google Patents
维护数据一致性的方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN108664520B CN108664520B CN201710211833.6A CN201710211833A CN108664520B CN 108664520 B CN108664520 B CN 108664520B CN 201710211833 A CN201710211833 A CN 201710211833A CN 108664520 B CN108664520 B CN 108664520B
- Authority
- CN
- China
- Prior art keywords
- data
- server
- message queue
- cache
- database
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种维护数据一致性的方法、装置、电子设备和可读存储介质,能够解决缓存服务器与数据库服务器之间数据不一致的问题,可靠、效率高且能大量节约业务服务器资源。本发明实施例的一种维护数据一致性的方法,包括:在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器;接收来自缓存服务器和/或数据库服务器的数据,并将所述数据分别放入各自的消息队列中;从消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种维护数据一致性的方法、装置、电子设备和可读存储介质。
背景技术
在大型互联网电商应用中,为了应对高并发、高可用等场景,应用数据需要同时保存在高速缓存服务器和数据库服务器中,并允许同时对高速缓存服务器和数据库服务器的数据进行修改,这样就会造成数据不一致,影响到业务逻辑,甚至会导致逻辑错误。
现有技术中有两种解决数据不一致问题的方法,一是清空缓存法:定期清空缓存,再将数据库服务器中的数据复制一份到高速缓存服务器中;二是遍历数据法:定期遍历高速缓存服务器和数据库服务器中的数据,发现不一致的数据,及时进行数据合并处理。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
清空缓存法存在的问题:
(1)清空缓存代价高:通常需要在***比较空闲的时候进行且清空缓存需要消耗一定资源和时间,会导致缓存数据在短暂时间内不可用,只能从数据库服务器中获取数据,会增大数据库服务器的压力,如果此时并发访问量突增,有很大可能会导致数据库服务器宕机,给***、业务带来严重损失;
(2)复制数据代价高:大型互联网电商数据都是亿级,大量级的数据从数据库服务器复制到高速缓存服务器中,需要大量的时间,此过程将长时间占用数据库服务器和高速缓存服务器的资源,比如:消耗大量带宽,影响服务器对外提供服务;大量消耗服务器CPU、内存资源,造成严重浪费。
(3)存在数据丢失的可能:在清空数据时,如果高速缓存服务器中的数据未及时写入数据库服务器,就会导致高速缓存服务器中的数据丢失;在复制数据时,由于网络丢包等原因,也可能导致数据丢失。
遍历数据法存在的问题:
(1)遍历高速缓存服务器和数据库服务器都会消耗大量服务器资源和时间;
(2)在遍历过程中,发现数据不一致时,需要合并数据,在合并数据时,高速缓存服务器和数据库服务器会进行加锁,这会给服务器本身性能、对外服务能力造成严重影响,如果不加锁,又会造成新的数据不一致。
发明内容
有鉴于此,本发明实施例提供一种维护数据一致性的方法、装置、电子设备和可读存储介质,能够解决缓存服务器与数据库服务器之间数据不一致的问题,可靠、效率高且能大量节约业务服务器资源。
为实现上述目的,根据本发明的一个方面,提供了一种维护数据一致性的方法。
本发明实施例的一种维护数据一致性的方法,包括:在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器;接收来自缓存服务器和/或数据库服务器的数据,并将所述数据分别放入各自的消息队列中;从消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理。
可选地,所述消息队列服务器为两个,一个消息队列服务器用于接收来自缓存服务器的数据;另一个消息队列服务器用于接收来自数据库服务器的数据。
可选地,所述方法还包括:在数据一致性维护服务器成功获取消息队列中的数据后,删除消息队列中的所述数据。
可选地,所述根据数据一致性原则,对所述数据进行处理包括:如果从缓存服务器和数据库服务器中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求;如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器;如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器;如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器和数据库服务器中的数据均不相同,则将新数据分别写入到缓存服务器和数据库服务器。
可选地,数据一致性维护服务器处理数据的时间间隔按需确定。
可选地,所述数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。
为实现上述目的,根据本发明的另一方面,提供了一种维护数据一致性的装置。
本发明实施例的一种维护数据一致性的装置,包括:缓存服务器和数据库服务器,用于在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器;消息队列服务器,用于接收来自缓存服务器和/或数据库服务器的数据,并将所述数据分别放入各自的消息队列中;数据一致性维护服务器,用于从消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理。
可选地,所述消息队列服务器为两个,一个消息队列服务器用于接收来自缓存服务器的数据;另一个消息队列服务器用于接收来自数据库服务器的数据。
可选地,所述消息队列服务器还用于:在数据一致性维护服务器成功获取消息队列中的数据后,删除消息队列中的所述数据。
可选地,所述根据数据一致性原则,对所述数据进行处理包括:如果从缓存服务器和数据库服务器中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求;如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器;如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器;如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器和数据库服务器中的数据均不相同,则将新数据分别写入到缓存服务器和数据库服务器。
可选地,数据一致性维护服务器处理数据的时间间隔按需确定。
可选地,所述数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。
为实现上述目的,根据本发明的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种维护数据一致性的方法。
为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。
本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种维护数据一致性的方法。
根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:通过基于消息队列的方式使得本发明无需清空缓存服务器,不会大量占用缓存服务器的资源,不影响缓存服务器对外提供服务;无需大批量复制数据库服务器的数据,不会大量占用数据库服务器的资源,也不会大量占用网络带宽,不影响数据库服务器对外提供服务。本发明每次只修改需要修改那一部分数据,无需访问和遍历未被修改的数据,大量节约维护数据一致性所消耗的时间,扫描队列的时间,比扫描整个数据集的时间少得多。通过采用消息队列服务器,将服务压力分散到多组服务器中,避免出现单点故障而导致全局不可用的情况。通过采用消息队列服务器可以可靠的保存被修改的数据,数据库一致***器中的程序可以按需运行,无需等到空闲时间,极大缩短了数据不一致的时间,降低了业务数据错误的可能性。本发明由于传输的数据量相对较小,网络丢包的可能性也小,降低了数据丢失的可能性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的维护数据一致性的方法的主要流程的示意图;
图2是根据本发明实施例的维护数据一致性的方法的主要步骤示意图;
图3是根据本发明实施例的维护数据一致性的装置的主要模块的示意图;
图4是根据本发明实施例的维护数据一致性的装置的部署示意图;
图5是实现本发明实施例的维护数据一致性的方法的电子设备的硬件结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例中,改进了之前的数据一致性维护方法,实现了一种维护数据一致性的解决方案。实施例新增了三个服务器,分别是两个消息队列服务器和一个数据库一致性维护服务器。消息队列服务器将来自高速缓存服务器和数据库服务器中的数据存放在各自的消息队列中,同时允许数据一致性维护服务器访问并或获取消息队列中的数据。数据一致性维护服务器从消息队列服务器中获取数据后,按照预定的数据一致性原则分别修改高速缓存服务器和数据库服务器中的数据。
这里的两个消息队列服务器、数据库服务器、高速缓存服务器、数据一致性维护服务器都是服务器集群,代表5类服务器,每一类服务器下都有至少1台服务器,而且在实际应用中每一类服务器需要配置多台和实际业务关联。
当业务服务器的数据被修改了,需要在高速缓存服务器和数据库服务器分别更新完毕后,业务服务器才可进行下一步操作。当要修改一个商品价格时,业务服务器需要提供商品价格修改的业务,修改后的数据立即生效,但这时只修改了高速缓存服务器,数据库服务器中仍然是旧数据。这时业务服务器只需要将修改后的数据发送给消息队列服务器,不需要修改数据库服务器。因为数据库服务器操作很慢,频繁操作数据库服务器,会导致***变慢。消息队列也是高速访问,其速度比数据库服务器快。
图1是本发明实施例的维护数据一致性的方法的主要步骤的示意图。
如图1所示,本发明实施例的维护数据一致性的方法主要包括如下步骤:
步骤S11:在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器。高速缓存服务器在修改数据的同时,将修改后的数据复制一份,并发给消息队列服务器;数据库服务器在修改数据的同时,将修改后的数据复制一份,并发给消息队列服务器。消息队列服务器可以是一台也可以是多台服务器,数据量小时可采用一台消息队列服务器,这台消息队列服务器需要能够分别接收来自高速缓存服务器和数据库服务器的数据,并分别输出至数据一致性维护数据库。数据库服务器和高速缓存服务器将修改后的数据发送到消息队列服务器中后,即可处理下一条数据,无需等待数据一致性维护,节约了时间。
在步骤S11完成修改后数据的复制发送后,从步骤S12开始进行数据的生成、修改。
步骤S12:接收来自缓存服务器和/或数据库服务器的数据,并将所述数据分别放入各自的消息队列中。消息队列是容器,存在于消息队列服务器中,在计算机资源足够的情况下,一个消息队列能容纳无数条数据,一条数据是一条记录。通过调用***数据API(Application Program Interface,应用程序接口)将一条数据放入消息队列,该过程即为生成数据,然后等待数据一致性维护服务器抓取。消息队列服务器在收到数据一致性维护服务器的请求后,将数据反馈给数据一致性维护服务器。
步骤S13:从消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理。数据一致性维护服务器定时、主动从消息队列的头部取出数据,并将已经取到的数据从消息队列中删除。从消息队列服务器中获取数据即消费数据,在消费数据后,删除已被消费的数据。消费数据是计算机“生产者、消费者模型”中的技术术语,其含义是从其他***或容器中获取数据,然后处理,最后可以选择是否向源***或容器发送数据处理结果。
图2是本发明实施例的维护数据一致性的方法的主要流程的示意图。
如图2所示,本发明实施例中,维护数据一致性的方法的具体实现流程是:高速缓存服务器在修改数据的同时,将修改后的数据复制一份,并发给消息队列服务器MQ1;数据库服务器在修改数据的同时,将修改后的数据复制一份,并发给消息队列服务器MQ2。消息队列服务器MQ1和消息队列服务器MQ2分别接收来自缓存服务器和数据库服务器的数据,并将所述数据分别放入各自的消息队列Q1队列和Q2队列中。数据维护一致***器从消息队列服务器MQ1和消息队列服务器MQ2分别中获取数据并根据数据一致性原则,对所述数据进行处理。消息队列服务器为了保证容错,会将同一条数据保存到多个消息队列服务器上,以便一个消息队列服务器宕机后,数据不会丢失。
其中,在数据一致性维护服务器成功获取消息队列中的数据后,删除消息队列中的所述数据。由于数据一致性维护服务器在消费数据时,可能会出现异常,就会导致数据没有被正确维护,需要重新获取数据;如果消费正常,那么,数据一致性维护服务器就会通知消息队列服务器删除已经被处理的数据。
其中,根据数据一致性原则,对所述数据进行处理包括:如果从缓存服务器和数据库服务器中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求。如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器。如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器。如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器和数据库服务器中的数据均不相同,则将新数据分别写入到缓存服务器和数据库服务器。
数据一致性维护服务器每次会同时向2个消息队列中各发送一条获取数据的请求,2个消息队列各自返回自己的数据,这时会存在如下四种情况:
1、这2个消息队列服务器的数据都为空,或者网络都中断,或者请求时间都超时等情况,数据一致性维护服务器没法获取数据,则数据一致性维护服务器什么也不做,等待下次再发起请求。
2、如果这2个消息队列中,从任意一个消息队列中成功获取数据(假设这条数据用“A”表示),从另一个消息队列中获取数据为空,或者网络中断、或请求时间超时,则只处理数据A,即:如果A来自数据库服务器,则将其写入高速缓存服务器,如果A来自高速缓存服务器,则将A写入数据库服务器。
3、如果从2个消息队列中都成功获取到了数据,并且它们的ID不同,则将来自数据库服务器的数据写入高速缓存服务器,将来自高速缓存服务器的数据写入数据库服务器。
4、如果从2个消息队列中都成功获取到了数据,并且它们的ID相同即同一条数据,则按照用户自定义的合并策略(比如最近最新原则等)合并数据,如果合并后的新数据与来自高速缓存服务器中的数据相同,则将新数据写入数据库服务器;如果合并后的新数据与数据库服务器中的数据相同,则将新数据写入高速缓存服务器;如果合并后的新数据与高速缓存服务器、数据库服务器中的数据都不同,则需要将新数据分别写入数据库服务器和高速缓存服务器。
另外,由数据库一致性维护服务器修改数据库和高速缓存中的数据不会再次进入消息队列,所以不存在循环进入队列的情况。
其中,数据一致性维护服务器处理数据的时间间隔按需确定。具体的时间间隔由实际需求确定,以修改价格为例,现在需求是修改价格后,数据库服务器和高速缓存服务器中的数据必须在很短时间内都生效,这时,就可以将数据一致性维护程序的运行间隔缩短到1秒运行一次,以便数据库服务器和高速缓存服务器中的数据尽快一致。如果某个商品的价格降价,但需要在3天后才生效,那么就可以不用着急,可以将数据一致性维护程序的运行频率降低到1小时运行一次。这里的数据一致性维护程序是部署在数据一致性维护服务器中的,该程序从消息队列中取到数据,完成数据合并任务,并最后将合并后的数据写回高速缓存服务器和数据库服务器。
其中,数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。所述数据一致性原则的确定看具体业务需求,由用户自己预先定义,比如原则有:最近即最新原则(对比高速缓存服务器和数据库服务器中同一数据的修改时间戳,哪个时间戳最新,就以谁为准)、缓存优先原则(始终以缓存数据为准)、数据库优先原则(始终以数据库为准),等等。
通过本发明实施例的维护数据一致性的方法可以看出,通过基于消息队列的方式使得本发明无需清空缓存服务器,不会大量占用缓存服务器的资源,不会影响缓存服务器对外提供服务;无需大批量复制数据库服务器的数据,不会大量占用数据库服务器的资源,也不大量占用网络带宽,不影响数据库服务器对外提供服务。本发明每次只修改需要修改那一部分数据,无需访问和遍历未被修改的数据,大量节约维护数据一致性所消耗的时间,扫描队列的时间,比扫描整个数据集的时间少得多。通过采用消息队列服务器,将服务压力分散到多组服务器中,避免出现单点故障而导致全局不可用的情况。通过采用消息队列服务器可以可靠的保存被修改的数据,数据库一致***器中的程序可以按需运行,无需等到空闲时间,极大缩短了数据不一致的时间,降低了业务数据错误的可能性。本发明由于传输的数据量相对较小,网络丢包的可能性也小,降低了数据丢失的可能性。
图3是本发明实施例的维护数据一致性的装置的主要模块的示意图。
如图3所示,本发明实施例的维护数据一致性的装置30主要包括:缓存服务器301和数据库服务器302,用于在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器303;消息队列服务器303,用于接收来自缓存服务器301和/或数据库服务器302的数据,并将所述数据分别放入各自的消息队列中;数据一致性维护服务器304,用于从消息队列服务器303中获取数据并根据数据一致性原则,对所述数据进行处理。
其中,消息队列服务器303为两个,一个消息队列服务器用于接收来自缓存服务器301的数据;另一个消息队列服务器用于接收来自数据库服务器302的数据。
其中,消息队列服务器303还用于:在数据一致性维护服务器304成功获取消息队列中的数据后,删除消息队列中的所述数据。由于数据一致性维护服务器304在消费数据时,可能会出现异常,就会导致数据没有被正确维护,需要重新获取数据;如果消费正常,那么,数据一致性维护服务器304就会通知消息队列服务器303删除已经被处理的数据。
其中,根据数据一致性原则,对所述数据进行处理包括:如果从缓存服务器301和数据库服务器302中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求。如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器。如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器。如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器301和数据库服务器302中的数据均不相同,则将新数据分别写入到缓存服务器301和数据库服务器302。
其中,数据一致性维护服务器304处理数据的时间间隔按需确定。具体的时间间隔由实际需求确定,以修改价格为例,现在需求是修改价格后,数据库服务器302和缓存服务器301中的数据必须在很短时间内都生效,这时,就可以将数据一致性维护程序的运行间隔缩短到1秒运行一次,以便数据库服务器302和缓存服务器301中的数据尽快一致。如果某个商品的价格降价,但需要在3天后才生效,那么就可以不用着急,可以将数据一致性维护程序的运行频率降低到1小时运行一次。这里的数据一致性维护程序是部署在数据一致性维护服务器304中的,该程序从消息队列中取到数据,完成数据合并任务,并最后将合并后的数据写回缓存服务器301和数据库服务器302。
其中,数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。所述数据一致性原则的确定看具体业务需求,由用户自己预先定义,比如原则有:最近即最新原则(对比缓存服务器301和数据库服务器302中同一数据的修改时间戳,哪个时间戳最新,就以谁为准)、缓存优先原则(始终以缓存数据为准)、数据库优先原则(始终以数据库为准),等等。
图4是本发明实施例的维护数据一致性的装置的部署示意图。
如图4所示,本发明的维护数据一致性的装置包括高速缓存服务器、数据库服务器、消息队列服务器Q1、消息队列服务器Q2和数据一致性维护服务器。高速缓存服务器在修改数据的同时,将修改后的数据复制并发送至消息队列服务器Q1。数据库服务器在修改数据的同时,将修改后的数据复制并发送至消息队列服务器Q2。消息队列服务器Q1接收来自高速缓存服务器的数据,并将所述数据分别放入消息队列Q1中。消息队列服务器Q2接收来自数据库服务器的数据,并将所述数据分别放入消息队列Q2中。数据一致性维护服务器从消息队列服务器Q1和消息队列服务器Q2中获取数据并根据数据一致性原则,将来自Q2队列的数据存入高速缓存服务器,将来自Q1队列的数据存入数据库服务器。
从以上描述可以看出,通过基于消息队列的方式使得本发明无需清空缓存服务器,不会大量占用缓存服务器的资源,不影响缓存服务器对外提供服务;无需大批量复制数据库服务器的数据,不会大量占用数据库服务器的资源,也不会大量占用网络带宽,不影响数据库服务器对外提供服务。本发明每次只修改需要修改那一部分数据,无需访问和遍历未被修改的数据,大量节约维护数据一致性所消耗的时间,扫描队列的时间,比扫描整个数据集的时间少得多。通过采用消息队列服务器,将服务压力分散到多组服务器中,避免出现单点故障而导致全局不可用的情况。通过采用消息队列服务器可以可靠的保存被修改的数据,数据库一致***器中的程序可以按需运行,无需等到空闲时间,极大缩短了数据不一致的时间,降低了业务数据错误的可能性。本发明由于传输的数据量相对较小,网络丢包的可能性也小,降低了数据丢失的可能性。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的维护数据一致性的方法。
本发明的非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的维护数据一致性的方法。
如图5所示,是实现本发明实施例的维护数据一致性的方法的电子设备的硬件结构示意图。如图5,该电子设备包括:一个或多个处理器51以及存储器52,图5中以一个处理器51为例。其中,存储器52即为本发明所提供的非暂态计算机可读存储介质。
维护数据一致性的方法的电子设备还可以包括:输入装置53和输出装置54。
处理器51、存储器52、输入装置53和输出装置54可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的维护数据一致性的方法对应的程序指令/模块(例如,附图3所示的缓存服务器301、数据库服务器302、消息队列服务器303和数据一致性维护服务器304)。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的维护数据一致性的方法。
存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据维护数据一致性的装置的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至维护数据一致性的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置53可接收输入的数字或字符信息,以及产生与维护数据一致性的装置的用户设置以及功能控制有关的键信号输入。输出装置54可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器52中,当被所述一个或者多个处理器51执行时,执行上述任意方法实施例中的维护数据一致性的方法。
根据本发明的技术方案,通过基于消息队列的方式使得本发明无需清空缓存服务器,不会大量占用缓存服务器的资源,不影响缓存服务器对外提供服务;无需大批量复制数据库服务器的数据,不会大量占用数据库服务器的资源,也不会大量占用网络带宽,不影响数据库服务器对外提供服务。本发明每次只修改需要修改那一部分数据,无需访问和遍历未被修改的数据,大量节约维护数据一致性所消耗的时间,扫描队列的时间,比扫描整个数据集的时间少得多。通过采用消息队列服务器,将服务压力分散到多组服务器中,避免出现单点故障而导致全局不可用的情况。通过采用消息队列服务器可以可靠的保存被修改的数据,数据库一致***器中的程序可以按需运行,无需等到空闲时间,极大缩短了数据不一致的时间,降低了业务数据错误的可能性。本发明由于传输的数据量相对较小,网络丢包的可能性也小,降低了数据丢失的可能性。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种维护数据一致性的方法,其特征在于,包括:
缓存服务器和数据库服务器在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器;
所述消息队列服务器接收来自所述缓存服务器和/或所述数据库服务器的数据,并将所述数据分别放入各自的消息队列中;
数据一致性维护服务器从所述消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理;
其中,所述根据数据一致性原则,对所述数据进行处理包括:
如果从缓存服务器和数据库服务器中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求;
如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器;
如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器;
如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器和数据库服务器中的数据均不相同,则将新数据分别写入到缓存服务器和数据库服务器。
2.根据权利要求1所述的方法,其特征在于,所述消息队列服务器为两个,一个消息队列服务器用于接收来自缓存服务器的数据;另一个消息队列服务器用于接收来自数据库服务器的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在数据一致性维护服务器成功获取消息队列中的数据后,删除消息队列中的所述数据。
4.根据权利要求1或2所述的方法,其特征在于,数据一致性维护服务器处理数据的时间间隔按需确定。
5.根据权利要求1所述的方法,其特征在于,所述数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。
6.一种维护数据一致性的装置,其特征在于,包括:
缓存服务器和数据库服务器,用于在修改数据的同时,将修改后的数据复制并发送至相应的消息队列服务器;
消息队列服务器,用于接收来自缓存服务器和/或数据库服务器的数据,并将所述数据分别放入各自的消息队列中;
数据一致性维护服务器,用于从消息队列服务器中获取数据并根据数据一致性原则,对所述数据进行处理;其中,所述根据数据一致性原则,对所述数据进行处理包括:
如果从缓存服务器和数据库服务器中获取的两条数据均为空或均获取失败,则等待再次发起获取数据请求;
如果一条数据获取成功,另一条数据为空或者获取失败,则将成功获取的数据写入与其来源相对的服务器;
如果两条数据均获取成功且唯一识别ID不同,则将两条数据一一对应写入与其来源相对的服务器;
如果两条数据均获取成功且唯一识别ID相同,则按照预设的数据一致性原则将这两条数据合并生成新数据,如果新数据仅与其中一个服务器中的数据相同,则将所述新数据写入另一个服务器;如果新数据与来自缓存服务器和数据库服务器中的数据均不相同,则将新数据分别写入到缓存服务器和数据库服务器。
7.根据权利要求6所述的装置,其特征在于,所述消息队列服务器为两个,一个消息队列服务器用于接收来自缓存服务器的数据;另一个消息队列服务器用于接收来自数据库服务器的数据。
8.根据权利要求6或7所述的装置,其特征在于,所述消息队列服务器还用于:在数据一致性维护服务器成功获取消息队列中的数据后,删除消息队列中的所述数据。
9.根据权利要求6或7所述的装置,其特征在于,数据一致性维护服务器处理数据的时间间隔按需确定。
10.根据权利要求6所述的装置,其特征在于,所述数据一致性原则包括最近即最新原则、缓存优先原则和数据库优先原则。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211833.6A CN108664520B (zh) | 2017-04-01 | 2017-04-01 | 维护数据一致性的方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211833.6A CN108664520B (zh) | 2017-04-01 | 2017-04-01 | 维护数据一致性的方法、装置、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664520A CN108664520A (zh) | 2018-10-16 |
CN108664520B true CN108664520B (zh) | 2021-02-26 |
Family
ID=63784088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710211833.6A Active CN108664520B (zh) | 2017-04-01 | 2017-04-01 | 维护数据一致性的方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664520B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110428153A (zh) * | 2019-07-19 | 2019-11-08 | 中国建设银行股份有限公司 | 消息聚合方法及装置 |
CN111414389B (zh) * | 2020-03-19 | 2023-09-22 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111651631B (zh) * | 2020-04-28 | 2023-11-28 | 长沙证通云计算有限公司 | 高并发视频数据处理方法、电子设备、存储介质及*** |
CN112416955B (zh) * | 2020-11-18 | 2022-02-22 | 四川长虹电器股份有限公司 | 基于高并发环境的缓存一致性问题解决方法 |
CN114546270B (zh) * | 2022-02-15 | 2024-02-09 | 杭州隆埠科技有限公司 | 数据存储方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395258B2 (en) * | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | ***通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和*** |
CN103617131A (zh) * | 2013-11-26 | 2014-03-05 | 曙光信息产业股份有限公司 | 一种实现数据缓存的方法 |
CN103699580A (zh) * | 2013-12-03 | 2014-04-02 | 中铁程科技有限责任公司 | 数据库同步方法及装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和*** |
CN106294741A (zh) * | 2016-08-10 | 2017-01-04 | 深圳市彬讯科技有限公司 | 一种自动化数据查询同步存储*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279944A1 (en) * | 2013-03-15 | 2014-09-18 | University Of Southern California | Sql query to trigger translation for maintaining consistency of cache augmented sql systems |
-
2017
- 2017-04-01 CN CN201710211833.6A patent/CN108664520B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395258B2 (en) * | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | ***通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和*** |
CN103617131A (zh) * | 2013-11-26 | 2014-03-05 | 曙光信息产业股份有限公司 | 一种实现数据缓存的方法 |
CN103699580A (zh) * | 2013-12-03 | 2014-04-02 | 中铁程科技有限责任公司 | 数据库同步方法及装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和*** |
CN106294741A (zh) * | 2016-08-10 | 2017-01-04 | 深圳市彬讯科技有限公司 | 一种自动化数据查询同步存储*** |
Non-Patent Citations (3)
Title |
---|
分布式***中异地数据库的数据一致性维护;张华伟等;《计算机工程与应用》;20040811(第23期);全文 * |
基于消息队列的分布式***数据一致性方法研究;于晓鹏;《吉林大学学报(信息科学版)》;20110531;第29卷(第3期);全文 * |
支持数据一致性的Web3.0服务平台的设计;龙宇;《中国优秀硕士学位论文全文数据库信息科技辑》;20170315(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108664520A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664520B (zh) | 维护数据一致性的方法、装置、电子设备和可读存储介质 | |
CN112260876B (zh) | 动态网关路由配置方法、平台、计算机设备及存储介质 | |
CN110795503A (zh) | 分布式存储***的多集群数据同步方法及相关装置 | |
US20160371122A1 (en) | File processing workflow management | |
CN107430606B (zh) | 具有并行持久性的消息代理*** | |
CN105493474B (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的***及方法 | |
CN111143382B (zh) | 数据处理方法、***和计算机可读存储介质 | |
US8843581B2 (en) | Live object pattern for use with a distributed cache | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
JP6405255B2 (ja) | 通信システム、キュー管理サーバ、及び、通信方法 | |
CN110895488B (zh) | 任务调度方法及装置 | |
US20210373914A1 (en) | Batch to stream processing in a feature management platform | |
CN113703954A (zh) | 一种消息备份方法、装置、电子设备及计算机存储介质 | |
CN110740145A (zh) | 消息消费方法、装置、存储介质及电子设备 | |
CN110196749B (zh) | 虚拟机的恢复方法及装置、存储介质及电子装置 | |
CN111666134A (zh) | 一种分布式任务调度的方法和*** | |
US8301750B2 (en) | Apparatus, system, and method for facilitating communication between an enterprise information system and a client | |
US9830263B1 (en) | Cache consistency | |
US8156374B1 (en) | Problem management for outsized queues | |
CN108121730B (zh) | 一种将数据更新快速同步到业务***的装置及方法 | |
US20220342579A1 (en) | Memory migration method, apparatus, and computing device | |
US11487751B2 (en) | Real time fault tolerant stateful featurization | |
CN109445966B (zh) | 事件处理方法、装置、介质和计算设备 | |
CN115658745A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN114816866A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |