[发明专利]数据一致性的实现方法、装置、设备及计算机存储介质在审
申请号: | 202010303936.7 | 申请日: | 2020-04-16 |
公开(公告)号: | CN111488367A | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 刘建波 | 申请(专利权)人: | 深圳前海微众银行股份有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/25;G06F16/27;G06F9/46;G06F9/448;G06F11/14 |
代理公司: | 深圳市世纪恒程知识产权代理事务所 44287 | 代理人: | 许峰 |
地址: | 518000 广东省深圳市前海深港合作区前*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据一致性 实现 方法 装置 设备 计算机 存储 介质 | ||
1.一种数据一致性的实现方法,其特征在于,所述数据一致性的实现方法包括:
在接收到事务开启指令时,调用预设应用程序接口API生成事物上下文;
在接收到数据写入命令时,调用所述预设API生成与所述数据写入命令对应的正向事务元素和反向事务元素,并缓存至所述事务上下文中;
在接收到事务提交指令时,将所述事务上下文中缓存的正向事务元素封装为Redis事务,并向主节点提交执行所述Redis事务;
在执行完成时,调用预设等待WAIT命令,以确定所述Redis事务对应的写入数据是否成功同步至备节点上;
若同步失败,则基于所述事务上下文中缓存的反向事务元素进行事务回滚。
2.如权利要求1所述的数据一致性的实现方法,其特征在于,所述在接收到事务提交指令时,将所述事务上下文中缓存的正向事务元素封装为Redis事务,并向主节点提交执行所述Redis事务的步骤包括:
在接收到事务提交指令时,通过WATCH命令对所述事务上下文中缓存的正向事务元素对应的第一键key进行监视,并通过MULTI命令开启第一命令队列;
将所述正向事务元素按照缓存顺序依次追加至所述第一命令队列中,封装得到Redis事务;
通过EXEC命令向主节点提交执行所述Redis事务。
3.如权利要求2所述的数据一致性的实现方法,其特征在于,所述数据一致性的实现方法还包括:
在接收到异常回滚指令时,调用所述预设API的回滚命令,清除所述第一命令队列中的命令并放弃执行。
4.如权利要求1所述的数据一致性的实现方法,其特征在于,所述基于所述事务上下文中缓存的反向事务元素进行事务回滚的步骤包括:
对所述事务上下文中缓存的反向事务元素对应的第二key施加锁,并通过MULTI命令开启第二命令队列;
将所述反向事务元素按照缓存顺序倒序追加至所述第二命令队列中,封装得到回滚事务;
通过EXEC命令向所述主节点提交执行所述回滚事务,以进行事务回滚。
5.如权利要求4所述的数据一致性的实现方法,其特征在于,所述对所述事务上下文中缓存的反向事务元素对应的第二key施加锁的步骤包括:
通过SETNX命令对所述事务上下文中缓存的反向事务元素对应的第二key施加排他锁;或,
通过WATCH命令对所述事务上下文中缓存的反向事务元素对应的第二key进行监视,以施加乐观锁。
6.如权利要求1所述的数据一致性的实现方法,其特征在于,所述事务上下文包括正向事务元素堆栈和反向事务元素堆栈,所述调用所述预设API生成与所述数据写入命令对应的正向事务元素和反向事务元素,并缓存至所述事务上下文中的步骤包括:
调用所述预设API生成与所述数据写入命令对应的正向事务元素,并根据预设映射关系生成与所述正向事务元素对应的反向事务元素;
将所述正向事务元素缓存至所述正向事务元素堆栈中,并将所述反向事务元素缓存至所述反向事务元素堆栈中。
7.如权利要求1所述的数据一致性的实现方法,其特征在于,所述在执行完成时,调用预设等待WAIT命令,以确定所述Redis事务对应的写入数据是否成功同步至备节点上的步骤包括:
在执行完成时,调用预设等待WAIT命令,以获取预设时间内返回确认的备节点的数量;
判断所述数量是否大于或等于预设阈值;
若所述数量小于预设阈值,则确定所述Redis事务对应的写入数据未成功同步至备节点上。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳前海微众银行股份有限公司,未经深圳前海微众银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010303936.7/1.html,转载请声明来源钻瓜专利网。