(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

PDF文档 专利 一种缓存数据库双写一致性的解决方法及装置

文档预览
中文文档 18 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种缓存数据库双写一致性的解决方法及装置 第 1 页 专利 一种缓存数据库双写一致性的解决方法及装置 第 2 页 专利 一种缓存数据库双写一致性的解决方法及装置 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 00:46:26上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。