(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210478665.8
(22)申请日 2022.05.05
(71)申请人 浪潮软件股份有限公司
地址 271000 山东省泰安市东 岳大街527号
浪潮科技园
(72)发明人 宁怀海 王柏华 赵绍祥 陈兆亮
(74)专利代理 机构 济南信达专利事务所有限公
司 37100
专利代理师 姜丽洁
(51)Int.Cl.
G06F 16/2455(2019.01)
G06F 16/27(2019.01)
G06F 16/23(2019.01)
G06F 11/30(2006.01)
(54)发明名称
一种缓存数据库双写一致性的解决方法及
装置
(57)摘要
本发明涉及图像处理领域, 具体提供了一种
缓存数据库双写一致性的解决方法及装置,具有
如下步骤: S1、 在A服务器中部署redis, 在B服务
器中部署redis ‑sentinal; S2、 配置redis服务
器, 从服务器比主服务器多一个slaveof的配置
和密码; S3、 在运行过程中, sentinel监控Redis
节点在指定时间内的状态; S4、 在 A、 B两台服务器
分别部署Rocket Mq; S5、 在 A、 B两台服务器上分别
启动nameserver; S6、 配置文件broker ‑
a .properties和配置文件broker ‑b‑
s .properties ; S7、 配置文件broker ‑
b .properties和配置文件broker ‑a‑
s.properties; S8、 启动broker。 与现有技术相
比, 本发明避免了脏数据的产生, 实现了缓存和
数据库双写的一 致性。
权利要求书2页 说明书14页 附图1页
CN 114860773 A
2022.08.05
CN 114860773 A
1.一种缓存数据库双写一 致性的解决方法, 其特 征在于, 具有如下步骤:
S1、 在A服 务器中部署redis, 在 B服务器中部署redis ‑sentinal;
S2、 配置redis服务器, 从服务器比主服务器多一个sl aveof的配置和密码, 再配置两个
哨兵, 在Redis安装目录下有一个senti nel.conf文件, 复制一份进行修改;
S3、 在运行 过程中, senti nel监控Redis节点在指定时间内的状态;
S4、 在A、 B两台服务器分别部署RocketMq, 每台机器上都要启动一个nameserver, 一个
Master角色和Slave角色的Bro ker, 并互为主备;
S5、 在A、 B两台服 务器上分别启动nameserver;
S6、 在A服务器上的Master Broker的配置文件broker ‑a.properties, 在B服务器上的
Slave Broker的配置文件bro ker‑b‑s.proper ties;
S7、 在B服务器上的Mast er Broker的配置文件broker ‑b.properties, 在S lave Broker
上配置文件bro ker‑a‑s.proper ties;
S8、 启动broker, 启动时, 先启动两台机器上的Master节点, 再启动两台机器上的Slave
节点。
2.根据权利要求1所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 在步骤
S3中, 在运行过程中, 当entinal发现监控的redis节 点在指定时间内没有响应, 那么就会认
为所述redis节点已失效, 此时这个redis节点被称为主观下线;
当sentinal认为redis节点下线数量达到quonum数量时, redis节点变为客观下线状
态, 若这个redis节点同时是master, 则触发故障转移操作, 超过半数的Sentinal同意的从
节点被选举为主节点;
当所有redis节点、 sentinal节点都启 动完成后, 在项目中引入spring ‑data、 redis、
redis连接池依赖, 然后在配置文件中完成redis配置 。
3.根据权利要求2所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 在步骤
S4中, 在两台服务器分别部署Rocket Mq, 每台机器上都要启动一个nameserver, 一个Master
角色和Slave角色的Broker, 并互为主备, 即在A机器上启动broker ‑a的master节点、
broker‑b‑s的slave节点; 在B机器上启动broker ‑b的master节点、 broker ‑a‑s的slave节
点; 在conf目录下提供了几种集群模式。
4.根据权利要求3所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 用户发
送一个请求, 如果所述请求是读请求, 则根据请求中的key去Redis中查找对应的Value, 若
Value不为空, 则将结果返回;
若Value为空, 则将所述读请求落到数据库, 从数据库中将结果查询出来返回结果, 并
将所述请求中的K ey和查询出的结果作为Value存 储到Redis缓存中。
5.根据权利要求4所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 对请求
中Key的验证规则, 不符合规则的请求不对缓存和数据库进行操作; 若请求中的Key符合规
则, 但是未在缓存和数据库中查到任何Value, 则将空值作为Value存储到缓存中, 并设置一
个过期时间。
6.根据权利要求4或5所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 用
户发送一个更新请求, 后端收到请求后, 首先根据请求中的Key, 将Redis中对应的缓存删
除, 并将要更新的数据的唯一标识Key和对数据库进行更新的操作路由之后发送到权 利 要 求 书 1/2 页
2
CN 114860773 A
2RocketMQ队列中, 此时若有其他用户发送了对 数据读请求, 发现数据不在缓存中, 将 重新读
取数据库加更新缓存的操作根据数据的唯一标识Key路由之后, 也发送到同一个RocketMq
队列中。
7.根据权利要求6所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 所述后
端在收到更新请求之后, 进行删除缓存和更新数据库, 而不是 先更新数据库再删除缓存。
8.根据权利要求7所述的一种缓存数据库双写一致性的解决方法, 其特征在于,
RocketMq的消费者方会对队列中的数据按照消息顺序进 行顺序消费, 首先将更新数据库的
消息数据取出, 将数据在数据库中进行更新, 然后将读取所述数据并更新缓存的消息数据
取出, 将新数据读取 出来并返回相应的结果, 然后将新数据存 储到缓存中。
9.根据权利要求8所述的一种缓存数据库双写一致性的解决方法, 其特征在于, 若
RocketMq的消费者方在消费读请求的消 息数据时, 若消 息数据已做过更新缓存操作, 则只
进行读取 数据库并返回响应结果。
10.一种缓存数据库双写一致性的解决装置, 其特征在于, 包括: 至少一个存储器和至
少一个处 理器;
所述至少一个存 储器, 用于存 储机器可读程序;
所述至少一个处理器, 用于调用所述机器可读程序, 执行权利要求1至9中任一所述的
方法。权 利 要 求 书 2/2 页
3
CN 114860773 A
3
专利 一种缓存数据库双写一致性的解决方法及装置
文档预览
中文文档
18 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-24 00:46:26上传分享