CN111078717A - 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 - Google Patents
数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111078717A CN111078717A CN201911327911.4A CN201911327911A CN111078717A CN 111078717 A CN111078717 A CN 111078717A CN 201911327911 A CN201911327911 A CN 201911327911A CN 111078717 A CN111078717 A CN 111078717A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- updating
- json format
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库与缓存的一致性同步方法、装置、计算机设备及存储介质,方法包括:获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新流程;所述缓存更新流程包括以下步骤:监听Mysql binlog,以得到二进制日志数据;解析该二进制日志数据,以得到JSON格式数据;将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据;获取消费后的JSON格式数据并过滤,以得到缓存数据;根据缓存数据更新缓存。本发明通过将缓存更新流程与数据更新流程独立运行,保证了数据库与缓存的一致性同步,同时避免缓存更新流程与数据更新流程耦合,保证了数据和缓存更新可靠性。
Description
技术领域
本发明涉及数据同步领域,更具体地说是指一种数据库与缓存的一致性同步方法、装置、计算机设备及存储介质。
背景技术
在高并发场景下,业务***需要借助redis(Remote Dictionary Server,远程字典服务)等一些缓存中间件来缓解数据库查询的压力,但是由于数据库和redis之间没有一致性协议,导致数据库和缓存经常出现数据不一致的场景。
目前常用的实现方案有三种,均由业务***实现
1)先更新数据库后删除缓存,这种情况下如果更新数据库之后,删除缓存操作失败,则缓存中还是更新前的数据,数据不一致。
2)先删除缓存后更新数据库,这种情况下如果删除缓存和更新数据库之间有其他的线程查询了目标数据,则会把更新前的数据查出来重新塞到缓存中,数据不一致。
3)先删除缓存后更新数据库,最后再删除一遍缓存,这种情况能够规避不一致问题,但是会带来额外的消耗,因为一次数据库修改缓存被刷新了两次。
因此,有必要提出一种数据库与缓存的一致性同步方法、装置、计算机设备及存储介质。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种数据库与缓存的一致性同步方法、装置、计算机设备及存储介质。
第一方面,本发明提出一种数据库与缓存的一致性同步方法,包括:
获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新流程;
所述缓存更新流程包括以下步骤:
监听Mysql binlog,以得到二进制日志数据;
解析该二进制日志数据,以得到JSON格式数据;
将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据;
获取消费后的JSON格式数据并过滤,以得到缓存数据;
根据缓存数据更新缓存。
第二方面,本发明提出一种数据库与缓存的一致性同步装置,包括:
数据更新单元,用于获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新单元;
所述缓存更新单元包括日志监听子单元、日志解析子单元、数据消费子单元、数据过滤子单元以及缓存更新子单元;
所述日志监听子单元,用于监听Mysql binlog,以得到二进制日志数据;
所述日志解析子单元,用于解析该二进制日志数据,以得到JSON格式数据;
所述数据消费子单元,用于将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据;
所述数据过滤子单元,用于获取消费后的JSON格式数据并过滤,以得到缓存数据;
所述缓存更新子单元,用于根据缓存数据更新缓存。
第三方面,本发明提出一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据库与缓存的一致性同步方法。
第四方面,本发明提出一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如上任一项所述的数据库与缓存的一致性同步方法。
本发明与现有技术相比的有益效果是:本发明通过将缓存更新流程与数据更新流程独立运行,保证了数据库与缓存的一致性同步,同时避免缓存更新流程与数据更新流程耦合,保证了数据和缓存更新可靠性;具体通过监听Mysql的binlog得到二进制日志数据,解析该二进制日志数据,得到JSON格式数据,将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据,获取消费后的JSON格式数据并过滤得到缓存数据,并根据缓存数据更新缓存,通过中间消费件实现数据异步传输,保证了缓存数据的可靠性,同时提升了数据缓存更新效率。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据库与缓存的一致性同步方法的应用场景示意图;
图2为本发明实施例提供的数据库与缓存的一致性同步方法的缓存更新流程的流程示意图;
图3为本发明实施例提供的数据库与缓存的一致性同步方法的子流程示意图;
图4为本发明实施例提供的数据库与缓存的一致性同步装置的示意性框图;
图5为本发明实施例提供的数据库与缓存的一致性同步装置的缓存更新单元的示意性框图;
图6为本发明实施例提供的数据库与缓存的一致性同步装置的缓存更新子单元的示意性框图;
图7为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的数据库与缓存的一致性同步方法的应用场景示意图。图2为本发明实施例提供的一种数据库与缓存的一致性同步方法的缓存更新流程的示意性流程图。该一种数据库与缓存的一致性同步方法应用于服务器中,服务器可与终端进行数据交互,该服务器包含有用于更新数据库数据的业务***和用于更新缓存数据的缓存更新***,所述的缓存更新流程在缓存更新***中执行,同时缓存更新***于业务***相互独立,业务***在接收到数据更新请求时执行数据修改和更新数据库操作,并触发缓存更新***执行缓存更新流程。
图2是本发明实施例提供的一种数据库与缓存的一致性同步方法的缓存更新流程的流程示意图。该数据库与缓存的一致性同步方法包括步骤S10:获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新流程。
在本实施例中,服务器中包含有用于更新数据库数据的业务***和用于更新缓存数据的缓存更新***,数据库更新流程于业务***中进行,缓存更新流程在缓存更新***中进行,同时缓存更新***于业务***相互独立,业务***在接收到数据更新请求时执行数据修改和更新数据库操作,并同时触发缓存更新***执行缓存更新流程,实现对于缓存数据的更新,保证数据库更新和缓存数据更新相互独立,互不影响。
参考图2,缓存更新流程包括步骤S110至S150。
S110、监听Mysql binlog,以得到二进制日志数据。
在本实施例中,Mysql,是一种关系数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。通过监听Mysql binlog,监听所有表的数据变化,在binlog生成每一条二进制日志数据时,获取该二进制日志数据,该二进制日志数据携带有所有的变化数据。
S120、解析该二进制日志数据,以得到JSON格式数据。
在本实施例中,在获取到由于数据变化而产生的二进制日志数据之后,将二进制日志数据进行解析以得到JSON格式数据,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
在一实施例中,步骤S120包括S121。
S121、通过maxwell解析工具解析该二进制日志数据,以得到JSON格式数据。
具体的,maxwell解析工具是一个能实时读取MySQL的二进制日志数据,并生成JSON格式数据,作为生产者发送给Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。通过maxwell解析工具能够解析二进制日志数据,并得到JSON数据发送给消息中间件,例如Kafka等。
S130、将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据。
在本实施例中,消息中间件在接收到JSON格式数据时,消费该到JSON格式数据,并输出消费后的到JSON格式数据,后续以消费后的到JSON格式数据为基础进行过滤转换得到缓存数据,并根据缓存数据更新缓存。同时,在缓存更新完成之后,消息中间件会根据缓存更新结果收到通知或不收到通知,在没收到通知时,消息中间件会重新输出消费后的到JSON格式数据,直到缓存更新完成,加入消息中间件使得整个缓存更新过程数据可靠,同时缓存更新效率大大提高。
具体的,本方案中使用的消息中间件为Kafka消息中间件。
S140、获取消费后的JSON格式数据并过滤,以得到缓存数据。
在本实施例中,binlog监听的是监听所有表的数据变化,因此,二进制日志数据中除了包含有需要缓存的数据之外,还包含有其他不必要缓存的数据,通过数据过滤,可以从消费后的JSON格式数据中过滤出需要缓存的数据作为缓存数据。
在一实施例中,步骤S140包括步骤S141。
S141、过滤消费后的JSON格式数据,得到JSON格式数据中需要缓存的缓存数据。
S150、根据缓存数据更新缓存。
在本实施例中,在得到需要缓存的缓存数据之后,根据缓存数据即可更新缓存。应该了解的是,缓存的更新结果可以是更新成功,也可以是更新失败,本发明会在更新成功后,通知对应消息中间件消费成功,并且消费完成,消息中间件则会等到下个解析后的JSON格式数据,而在更新失败后,不通知消息中间件,此时消息中间件则会重新输出未更新成功的消费后的JSON格式数据,直到该JSON格式数据更新成功,保证缓存数据更新的顺利完成进而保证数据库与缓存的一致性同步。
参考图3,在一实施例中,步骤S150包括步骤S151-S155。
S151、计算缓存数据的缓存数据的key值。
S152、根据key值更新缓存数据进入redis。
S153、判断缓存数据是否更新成功。
S154、若缓存数据更新成功,则通知消息中间件缓存更新成功。
S155、若缓存数据更新失败,则不通知消息中间件,由消息中间件重新输出消费后的JSON格式数据,并重新执行获取消费后的JSON格式数据并过滤,以得到缓存数据的步骤。
在本实施例中,redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。通过计算缓存数据的key值,并根据key值更新缓存数据进入redis中,在更新完成之后,判断该次缓存数据是否更新成功,并根据缓存数据更新结果通知或不通知消息中间件,在消息中间件没收到通知时,消息中间件会重新输出消费后的到JSON格式数据,直到缓存更新完成,保证缓存数据更新的顺利完成进而保证数据库与缓存的一致性同步,加入消息中间件使得整个缓存更新过程数据可靠,同时缓存更新效率大大提高。
本方案通过将缓存更新流程与数据更新流程独立运行,保证了数据库与缓存的一致性同步,同时避免缓存更新流程与数据更新流程耦合,保证了数据和缓存更新可靠性;具体通过监听Mysql的binlog得到二进制日志数据,解析该二进制日志数据,得到JSON格式数据,将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据,获取消费后的JSON格式数据并过滤得到缓存数据,并根据缓存数据更新缓存,通过中间消费件实现数据异步传输,保证了缓存数据的可靠性,同时提升了数据缓存更新效率。
图4是本发明实施例提供的一种数据库与缓存的一致性同步装置的示意性框图。如图4所示,对应于以上数据库与缓存的一致性同步方法,本发明还提供一种数据库与缓存的一致性同步装置。该数据库与缓存的一致性同步装置包括用于执行上述数据库与缓存的一致性同步方法的单元,该装置可以被配置于台式电脑、平板电脑、手提电脑、等终端中。具体地,请参阅图4,该数据库与缓存的一致性同步装置包括数据更新单元10和缓存更新单元20。
数据更新单元10,用于获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新单元20。
在本实施例中,服务器中包含有用于更新数据库数据的业务***和用于更新缓存数据的缓存更新***,数据库更新流程于业务***中进行,缓存更新流程在缓存更新***中进行,同时缓存更新***于业务***相互独立,业务***在接收到数据更新请求时执行数据修改和更新数据库操作,并同时触发缓存更新***执行缓存更新流程,实现对于缓存数据的更新,保证数据库更新和缓存数据更新相互独立,互不影响。
参考图5,缓存更新单元20包括日志监听子单元21、日志解析子单元22、数据消费子单元23、数据过滤子单元24以及缓存更新子单元25。
日志监听子单元21,用于监听Mysql的binlog,以得到二进制日志数据。
在本实施例中,Mysql,是一种关系数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。通过监听Mysql binlog,监听所有表的数据变化,在binlog生成每一条二进制日志数据时,获取该二进制日志数据,该二进制日志数据携带有所有的变化数据。
日志解析子单元22,用于解析该二进制日志数据,以得到JSON格式数据。
在本实施例中,在获取到由于数据变化而产生的二进制日志数据之后,将二进制日志数据进行解析以得到JSON格式数据,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
日志解析子单元22,还用于通过maxwell解析工具解析该二进制日志数据,以得到JSON格式数据。
具体的,maxwell解析工具是一个能实时读取MySQL的二进制日志数据,并生成JSON格式数据,作为生产者发送给Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。通过maxwell解析工具能够解析二进制日志数据,并得到JSON数据发送给消息中间件,例如Kafka等。
数据消费子单元23,用于将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据。
在本实施例中,消息中间件在接收到JSON格式数据时,消费该到JSON格式数据,并输出消费后的到JSON格式数据,后续以消费后的到JSON格式数据为基础进行过滤转换得到缓存数据,并根据缓存数据更新缓存。同时,在缓存更新完成之后,消息中间件会根据缓存更新结果收到通知或不收到通知,在没收到通知时,消息中间件会重新输出消费后的到JSON格式数据,直到缓存更新完成,加入消息中间件使得整个缓存更新过程数据可靠,同时缓存更新效率大大提高。
具体的,本方案中使用的消息中间件为Kafka消息中间件。
数据过滤子单元24,用于获取消费后的JSON格式数据并过滤,以得到缓存数据。
在本实施例中,binlog监听的是监听所有表的数据变化,因此,二进制日志数据中除了包含有需要缓存的数据之外,还包含有其他不必要缓存的数据,通过数据过滤,可以从消费后的JSON格式数据中过滤出需要缓存的数据作为缓存数据。
数据过滤子单元24,还用于过滤消费后的JSON格式数据,得到JSON格式数据中需要缓存的缓存数据。
缓存更新子单元25,用于根据缓存数据更新缓存。
在本实施例中,在得到需要缓存的缓存数据之后,根据缓存数据即可更新缓存。应该了解的是,缓存的更新结果可以是更新成功,也可以是更新失败,本发明会在更新成功后,通知对应消息中间件消费成功,并且消费完成,消息中间件则会等到下个解析后的JSON格式数据,而在更新失败后,不通知消息中间件,此时消息中间件则会重新输出未更新成功的消费后的JSON格式数据,直到该JSON格式数据更新成功,保证缓存数据更新的顺利完成进而保证数据库与缓存的一致性同步。
参考图6,缓存更新子单元25包括缓存计算模块251、缓存更新模块252、更新判断模块253、结果通知模块254以及重新输出模块255。
缓存计算模块251,用于计算缓存数据的缓存数据的key值。
缓存更新模块252,用于根据key值更新缓存数据进入redis。
更新判断模块253,用于判断缓存数据是否更新成功。
结果通知模块254,用于在缓存数据更新成功时,通知消息中间件缓存更新成功。
重新输出模块255,用于在缓存数据更新失败时,不通知消息中间件,由消息中间件重新输出消费后的JSON格式数据,并重新执行获取消费后的JSON格式数据并过滤,以得到缓存数据。
在本实施例中,redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。通过计算缓存数据的key值,并根据key值更新缓存数据进入redis中,在更新完成之后,判断该次缓存数据是否更新成功,并根据缓存数据更新结果通知或不通知消息中间件,在消息中间件没收到通知时,消息中间件会重新输出消费后的到JSON格式数据,直到缓存更新完成,保证缓存数据更新的顺利完成进而保证数据库与缓存的一致性同步,加入消息中间件使得整个缓存更新过程数据可靠,同时缓存更新效率大大提高。
本方案通过将缓存更新流程与数据更新流程独立运行,保证了数据库与缓存的一致性同步,同时避免缓存更新流程与数据更新流程耦合,保证了数据和缓存更新可靠性;具体通过监听Mysql的binlog得到二进制日志数据,解析该二进制日志数据,得到JSON格式数据,将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据,获取消费后的JSON格式数据并过滤得到缓存数据,并根据缓存数据更新缓存,通过中间消费件实现数据异步传输,保证了缓存数据的可靠性,同时提升了数据缓存更新效率。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述数据库与缓存的一致性同步装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
请参阅图7,图7是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图7,该计算机设备500包括通过***总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作***5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种数据库与缓存的一致性同步方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种数据库与缓存的一致性同步方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机***中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据库与缓存的一致性同步方法,其特征在于,包括:
获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新流程;
所述缓存更新流程包括以下步骤:
监听Mysql binlog,以得到二进制日志数据;
解析该二进制日志数据,以得到JSON格式数据;
将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据;
获取消费后的JSON格式数据并过滤,以得到缓存数据;
根据缓存数据更新缓存。
2.根据权利要求1所述的数据库与缓存的一致性同步方法,其特征在于,所述获取消费后的JSON格式数据并过滤,以得到缓存数据的步骤,包括:
过滤消费后的JSON格式数据,得到JSON格式数据中需要缓存的缓存数据。
3.根据权利要求1所述的数据库与缓存的一致性同步方法,其特征在于,所述根据缓存数据更新缓存的步骤,包括:
计算缓存数据的缓存数据的key值;
根据key值更新缓存数据进入redis;
判断缓存数据是否更新成功;
若缓存数据更新成功,则通知消息中间件缓存更新成功;
若缓存数据更新失败,则不通知消息中间件,由消息中间件重新输出消费后的JSON格式数据,并重新执行获取消费后的JSON格式数据并过滤,以得到缓存数据的步骤。
4.根据权利要求1所述的数据库与缓存的一致性同步方法,其特征在于,所述解析该二进制日志数据,以得到JSON格式数据的步骤,包括:
通过maxwell解析工具解析该二进制日志数据,以得到JSON格式数据。
5.一种数据库与缓存的一致性同步装置,其特征在于,包括:
数据更新单元,用于获取数据更新请求,根据数据更新请求更新数据库数据,并触发缓存更新单元;
所述缓存更新单元包括日志监听子单元、日志解析子单元、数据消费子单元、数据过滤子单元以及缓存更新子单元;
所述日志监听子单元,用于监听Mysql binlog,以得到二进制日志数据;
所述日志解析子单元,用于解析该二进制日志数据,以得到JSON格式数据;
所述数据消费子单元,用于将该JSON格式数据发送到消息中间件,消费JSON格式数据,输出消费后的JSON格式数据;
所述数据过滤子单元,用于获取消费后的JSON格式数据并过滤,以得到缓存数据;
所述缓存更新子单元,用于根据缓存数据更新缓存。
6.根据权利要求5所述的数据库与缓存的一致性同步装置,其特征在于,所述数据过滤子单元,还用于过滤消费后的JSON格式数据,得到JSON格式数据中需要缓存的缓存数据。
7.根据权利要求5所述的数据库与缓存的一致性同步装置,其特征在于,所述缓存更新子单元包括缓存计算模块、缓存更新模块、更新判断模块、结果通知模块以及重新输出模块;
所述缓存计算模块,用于计算缓存数据的缓存数据的key值;
所述缓存更新模块,用于根据key值更新缓存数据进入redis;
所述更新判断模块,用于判断缓存数据是否更新成功;
所述结果通知模块,用于在缓存数据更新成功时,通知消息中间件缓存更新成功;
所述重新输出模块,用于在缓存数据更新失败时,不通知消息中间件,由消息中间件重新输出消费后的JSON格式数据,并重新执行获取消费后的JSON格式数据并过滤,以得到缓存数据的步骤。
8.根据权利要求5所述的数据库与缓存的一致性同步装置,其特征在于,所述日志解析子单元,还用于通过maxwell解析工具解析该二进制日志数据,以得到JSON格式数据。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的数据库与缓存的一致性同步方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至4中任一项所述的数据库与缓存的一致性同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911327911.4A CN111078717A (zh) | 2019-12-20 | 2019-12-20 | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911327911.4A CN111078717A (zh) | 2019-12-20 | 2019-12-20 | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111078717A true CN111078717A (zh) | 2020-04-28 |
Family
ID=70316337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911327911.4A Pending CN111078717A (zh) | 2019-12-20 | 2019-12-20 | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078717A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN112597151A (zh) * | 2020-12-03 | 2021-04-02 | 长沙市到家悠享家政服务有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112749233A (zh) * | 2021-01-15 | 2021-05-04 | 京东数字科技控股股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN113535777A (zh) * | 2021-06-24 | 2021-10-22 | 上海浦东发展银行股份有限公司 | 数据库查询方法、装置和*** |
CN113641690A (zh) * | 2021-08-10 | 2021-11-12 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
CN113938497A (zh) * | 2021-12-17 | 2022-01-14 | 中证信用增进股份有限公司 | 一种基于消息中间件的数据同步方法、装置及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294607A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 缓存数据的更新方法及更新装置 |
CN109800272A (zh) * | 2019-02-25 | 2019-05-24 | 广州虎牙信息科技有限公司 | 缓存数据同步方法、服务器、应用***及存储装置 |
CN109857812A (zh) * | 2019-02-27 | 2019-06-07 | 珠海天燕科技有限公司 | 一种处理缓存中数据的方法和装置 |
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
-
2019
- 2019-12-20 CN CN201911327911.4A patent/CN111078717A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294607A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 缓存数据的更新方法及更新装置 |
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
CN109800272A (zh) * | 2019-02-25 | 2019-05-24 | 广州虎牙信息科技有限公司 | 缓存数据同步方法、服务器、应用***及存储装置 |
CN109857812A (zh) * | 2019-02-27 | 2019-06-07 | 珠海天燕科技有限公司 | 一种处理缓存中数据的方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN112597151A (zh) * | 2020-12-03 | 2021-04-02 | 长沙市到家悠享家政服务有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112749233A (zh) * | 2021-01-15 | 2021-05-04 | 京东数字科技控股股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN112749233B (zh) * | 2021-01-15 | 2024-05-17 | 京东科技控股股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN113535777A (zh) * | 2021-06-24 | 2021-10-22 | 上海浦东发展银行股份有限公司 | 数据库查询方法、装置和*** |
CN113641690A (zh) * | 2021-08-10 | 2021-11-12 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
CN113641690B (zh) * | 2021-08-10 | 2023-10-27 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
CN113938497A (zh) * | 2021-12-17 | 2022-01-14 | 中证信用增进股份有限公司 | 一种基于消息中间件的数据同步方法、装置及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078717A (zh) | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 | |
US10255141B2 (en) | Event batching, output sequencing, and log based state storage in continuous query processing | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US9262258B2 (en) | Handling faults in a continuous event processing (CEP) system | |
US8548945B2 (en) | Database caching utilizing asynchronous log-based replication | |
EP2959408B1 (en) | Executing continuous event processing (cep) queries in parallel | |
US20140143625A1 (en) | Computer-readable recording medium, failure prediction device and applicability determination method | |
CN110928719A (zh) | Ssd低功耗模式异常处理方法、装置、计算机设备及存储介质 | |
CN111026568A (zh) | 数据和任务关系构建方法、装置、计算机设备及存储介质 | |
CN111190892A (zh) | 一种数据回填中处理异常数据的方法和装置 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN115408391A (zh) | 一种数据库表变更方法、装置、设备和存储介质 | |
CN109299124B (zh) | 用于更新模型的方法和装置 | |
CN113656239A (zh) | 针对中间件的监控方法、装置及计算机程序产品 | |
CN112052295A (zh) | 一种数据同步方法、装置、电子设备和可读存储介质 | |
CN109597819B (zh) | 用于更新数据库的方法和装置 | |
CN114020770A (zh) | 数据质量检查方法、装置、计算机设备及存储介质 | |
CN111984723A (zh) | 数据同步方法、装置及终端设备 | |
CN111694801A (zh) | 一种应用于故障恢复的数据去重方法和装置 | |
WO2021168697A1 (zh) | 数据同步方法、装置、数据存储***及计算机可读介质 | |
US20110231700A1 (en) | Management device, correction candidate output method, and computer product | |
CN112559547A (zh) | 确定多存储对象副本之间一致性的方法及装置 | |
CN111061613A (zh) | 前端异常监控方法、装置及计算机设备 | |
CN110727537A (zh) | 统一处理响应报文的方法、装置、计算机设备及存储介质 | |
CN114138746A (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 |