一种基于事务id的双写技术方法及系统与流程

文档序号:28926234发布日期:2022-02-16 14:21阅读:165来源:国知局
一种基于事务id的双写技术方法及系统与流程

1.本发明涉及记录载体处理相关领域,尤其涉及一种基于事务id的双写技术方法及系统。


背景技术:

2.互联网数据中心internet data center简称idc,是电信部门对企业、商户或网站服务器提供托管的场所。随着互联网技术的发展,特别是金融科技的深入应用,越来越多的金融科技公司,特别是互联网金融科技公司,对于数据的安全性、服务的稳定性都提出了更加严苛的要求。为了改善企业应用体验,以rediscluster为代表的缓存技术在各大软件架构中大规模应用和实践,伴随着跨idc部署的需求,rediscluster的同城双活技术也被越来越多的企业所重视。一些互联网企业基于redis的日志复制技术定制化实现,这些方案大部分实现起来都非常复杂,而且对redis的版本要求都比较高,但rediscluster目前在大部分企业以3.x版本应用较多,而4.x及以上的版本投入生产的比较少,版本的变更对方案的影响较大。
3.但本技术发明人在实现本技术实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
4.现有技术中存在方案成本过高,无法保证跨idc的数据一致性技术问题。


技术实现要素:

5.本技术实施例通过提供一种基于事务id的双写技术方法及系统,解决了现有技术中存在方案成本过高,无法保证跨idc的数据一致性技术问题,达到提供一种低成本的双写方案,在控制成本的前提下,保证跨idc的数据一致性的技术效果。
6.鉴于上述问题,提出了本技术实施例提供一种基于事务id的双写技术方法及系统。
7.第一方面,本技术提供了一种基于事务id的双写技术方法,其中,所述方法包括:获得第一客户端请求参数;通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;根据所述第一解析结果获得第一事务操作标识oid;通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。
8.另一方面,本技术还提供了一种基于事务id的双写技术系统,所述系统包括:第一获得单元,所述第一获得单元用于获得第一客户端请求参数;第二获得单元,所述第二获得单元用于通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解
析结果;第三获得单元,所述第三获得单元用于根据所述第一解析结果获得第一事务操作标识oid;第四获得单元,所述第四获得单元用于通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;第一判断单元,所述第一判断单元用于判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;第二判断单元,所述第二判断单元用于判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。
9.第三方面,本发明提供了一种基于事务id的双写技术系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现第一方面所述方法的步骤。
10.本技术实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
11.由于采用了获得第一客户端请求参数;通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;根据所述第一解析结果获得第一事务操作标识oid;通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。达到提供一种低成本的双写方案,在控制成本的前提下,保证跨idc的数据一致性的技术效果。
12.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
13.图1为本技术实施例一种基于事务id的双写技术方法的流程示意图;
14.图2为本技术实施例一种基于事务id的双写技术方法的判断所述第一写入结果是否执行成功的流程示意图;
15.图3为本技术实施例一种基于事务id的双写技术方法的根据所述第一解析结果获得第一事务操作标识oid的流程示意图;
16.图4为本技术实施例一种基于事务id的双写技术方法的通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis队列写入的流程示意图;
17.图5为本技术实施例一种基于事务id的双写技术方法的进行补偿的流程示意图;
18.图6为本技术实施例一种基于事务id的双写技术方法的事务补偿的进一步分析的流程示意图;
19.图7为本技术实施例一种基于事务id的双写技术方法的根据所述第二解析结果进
行命令类型匹配的流程示意图;
20.图8为本技术实施例一种基于事务id的双写技术系统的结构示意图;
21.图9为本技术实施例示例性电子设备的结构示意图。
22.附图标记说明:第一获得单元11,第二获得单元12,第三获得单元13,第四获得单元14,第一判断单元15,第二判断单元16,电子设备50,处理器51,存储器52,输入装置53,输出装置54。
具体实施方式
23.本技术实施例通过提供一种基于事务id的双写技术方法及系统,解决了现有技术中存在非开源方案成本过高,无法保证跨idc的数据一致性技术问题,达到提供一种低成本的双写方案,达到控制成本的前提下,保证跨idc的数据一致性的技术效果。下面结合附图,对本技术的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
24.本技术的说明书和权利要求书及上述附图中的术语“第一”、第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
25.申请概述
26.互联网数据中心internet data center简称idc,是电信部门对企业、商户或网站服务器提供托管的场所。随着互联网技术的发展,特别是金融科技的深入应用,越来越多的金融科技公司,特别是互联网金融科技公司,对于数据的安全性、服务的稳定性都提出了更加严苛的要求。为了改善企业应用体验,以rediscluster为代表的缓存技术在各大软件架构中大规模应用和实践,伴随着跨idc部署的需求,rediscluster的同城双活技术也被越来越多的企业所重视。一些互联网企业基于redis的日志复制技术定制化实现,这些方案大部分实现起来都非常复杂,而且对redis的版本要求都比较高,但rediscluster目前在大部分企业以3.x版本应用较多,而4.x及以上的版本投入生产的比较少,版本的变更对方案的影响较大。
27.随着业务规模越来越大,单机房业务承载能力有限,需要多个idc来分担处理能力,单机房出现故障会导致全部业务中断,跨idc部署可以应对单机房断电、线缆被挖断等各种不可控因素,保证服务的稳定性和业务的连续性。同城双活相对于异地多活成本更低,网络质量也更稳定,对技术实施的要求相对较低。但现有技术中的解决方案存在方案成本过高,无法保证跨idc的数据一致性技术问题。
28.针对上述技术问题,本技术提供的技术方案总体思路如下:
29.本技术实施例提供了一种基于事务id的双写技术方法,其中,所述方法包括:获得第一客户端请求参数;通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;根据所述第一解析结果获得第一事务操作标识oid;通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis队列写入,获得第一写入结果;判
断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端所述第一解析结果的redis命令写入,获得第二写入结果;判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。
30.在介绍了本技术基本原理后,下面将结合说明书附图来具体介绍本技术的各种非限制性的实施方式。
31.实施例一
32.如图1所示,本技术实施例提供了一种基于事务id的双写技术方法,其中,所述方法包括:
33.步骤s100:获得第一客户端请求参数;
34.步骤s200:通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;
35.具体而言,所述第一客户端请求参数是指企业端或者业务方的请求缓存或者托管的请求信息,所述api封装客户端redis组件为进行jedis客户端模拟的组件,jedis是redis组件java语言的通用客户端。获得所述第一客户端的请求参数后,通过所述api封装客户端redis组件进行jedis客户端,对所述第一客户端请求参数进行解析,一般而言,所述第一客户端请求参数包括:set、setex、setnx、expireat、del、hset、hdel命令。进行参数解析的过程为参数处理过程,即将各自类型接口的操作转换成oid,oid包括两种类型string和hash,set、setex、setnx、expireat、del为string类型,即string类型为第一类型命令,它的oid组成规则:{uuid}_s_key。hset、hdel对应hash类型,hash类型为第二类型命令,它的oid组成规则:{uuid}_h_keyfield,其中key需要进行base64编码,避免出现分隔歧义。
36.步骤s300:根据所述第一解析结果获得第一事务操作标识oid;
37.步骤s400:通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;
38.具体而言,根据所述第一解析结果,基于业务命名空间规则生成事务操作标识oid,即所述第一事务操作标识oid,通过所述本地redis集群客户端将所述第一事务操作标识oid写入到该业务命名空间对应的本地redis队列中,当写入失败时,则返回执行失败,当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果。
39.步骤s500:判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;
40.进一步而言,如图2所示,所述判断所述第一写入结果是否执行成功,本技术实施例步骤s500还包括:
41.步骤s510:当所述第一写入结果执行失败时,获得第一删除指令;
42.步骤s520:根据所述第一删除指令删除所述第一事务操作标识oid,并返回执行失败。
43.具体而言,对本地redis集群客户端进行所述第一解析结果的redis命令写入的写
入结果进行判断,当所述写入结果为执行成功时,则通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果。当所述写入结果为执行失败时,此时获得第一删除指令,根据所述第一删除指令将所述第一事务操作标识oid在所述本地redis集群客户端删除,且无论删除是否成功,均反馈执行失败的执行结果。
44.步骤s600:判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。
45.具体而言,通过所述远程redis集群客户端进行所述第一解析结果的远程redis命令写入,获得所述第二写入结果,其中,所述第二写入结果包括写入成功和写入失败两种情况,当所述第二写入结果为写入成功时,此时将所述本地redis集群客户端的所述第一事务操作标识oid删除,并返回执行成功的执行结果。当所述第二写入结果为写入失败时,此时反馈远程执行失败结果,并通过事务补偿器进行事务补偿。达到提供一种低成本的双写方案,达到控制成本的前提下,保证跨idc的数据一致性的技术效果。
46.进一步而言,如图3所示,所述根据所述第一解析结果获得第一事务操作标识oid,本技术实施例步骤s300还包括:
47.步骤s310:获得业务命名空间规则;
48.步骤s320:根据所述第一解析结果,基于所述业务命名空间规则生成所述第一事务操作标识oid。
49.进一步而言,如图4所示,所述通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis队列写入,本技术实施例步骤s400还包括:
50.步骤s410:根据所述业务命名空间规则获得所述第一解析结果对应的第一业务命名空间;
51.步骤s420:根据所述第一业务命名空间获得所述本地redis队列,将所述第一事务操作标识oid进行所述本地redis队列写入。
52.具体而言,所述业务命名空间规则是指将内存进行分割,让不同内存区域的同名结构共存,从而解决在大型项目中可能出现的重名结构问题的规则。根据所述第一解析结果,基于所述业务命名空间规则生成所述第一解析结果的第一事务操作标识oid。通过所述业务空间规则,使得所述第一解析结果与所述第一事务操作标识oid具有唯一对应关系。进一步来说,基于所述业务命名空间规则,所述第一解析结果具有与其唯一对应的业务命名空间,即所述第一业务命名空间,根据所述第一业务命名空间,获得所述本地redis队列。所述本地redis队列与所述第一业务命名空间具有对应关系,将所述第一事务操作标识oid进行所述本地redis队列写入。
53.进一步的,如图5所示,本技术实施例步骤s700还包括:
54.步骤s710:获得事务操作标识oid检测指令,根据所述事务操作标识oid检测指令进行所述本地redis集群客户端的oid检测,获得第一检测结果;
55.步骤s720:当所述第一检测结果为所述第一事务操作标识oid未被删除时,根据所述第一事务操作标识oid对应的所述本地redis队列获得第一消费端;
56.步骤s730:基于所述第一消费端对所述第一事务操作标识oid解析,获得第二解析结果;
57.步骤s740:根据所述第二解析解结果进行事务补偿。
58.具体而言,所述事务操作标识oid检测指令为进行本地redis集群oid进行检测的指令,根据所述事务操作标识oid检测指令进行所述本地redis集群客户端的oid检测,获得第一检测结果,当所述第一检测结果为第一事务操作标识oid未被删除时,即出现本地redis集群oid出现未被删除的消息,说明出现了半事务,此时可能是事务执行器意外宕机或者远程redis集群客户端命令执行不成功,此时通过所述第一事务操作标识oid对应的所述本地redis队列启动第一消费端,基于所述第一消费端对所述所述第一事务操作标识oid解析,获得第二解析结果,其中,所述第二解析结果包括所述第一事务操作标识oid对应的命令和参数,基于解析获得的结果进行事务补偿,以保证本地和远程的一致性。进一步来说,所述事务补偿的过程为通过消息队列订阅,对每个事务队列启动订阅线程独立处理改业务对应的待补偿数据,通过每个业务对应的消息订阅线程,使用blpop从消息队列获取对应队列的队列头元素oid,根据解析的命令和参数进行事务补偿。
59.进一步的,如图6所示,所述根据所述第二解析解结果进行事务补偿,本技术实施例步骤s740还包括:
60.步骤s741:根据所述第二解析结果进行命令类型匹配;
61.步骤s742:当匹配结果为第一类型命令时,进行所述本地redis集群客户端和所述远程redis集群客户端的key对应的数据和ttl比对,获得第一比对结果;
62.步骤s743:当所述第一比对结果和所述本地redis集群客户端的key对应的数据和ttl满足第一预设条件,则通过所述本地redis集群客户端的key对应的数据和ttl进行远程redis集群客户端设置;
63.步骤s744:当所述第一比对结果和所述本地redis集群客户端的key对应的数据和ttl不满足第一预设条件,则删除所述远程redis集群客户端的key对应的数据和ttl。
64.具体而言,所述第一类型命令包括:set、setex、setnx、expireat、del命令,根据所述第二解析结果进行命令类型匹配,当匹配为所述第一类型命令中的一个时,则分发给string处理器进行处理。通过string处理器进行本地redis集群客户端与远程redis集群客户端的key对应的数据和ttl比对,获得第一比对结果,当所述第一比对结果为不一致且本地redis集群客户端得key对应的数据和ttl的未过期,则判断满足第一预设条件,此时使用本地redis查询出来的数据和ttl设置到远程redis集群客户端,当所述第一比对结果为一致或者本地redis集群客户端得key对应的数据和ttl的过期,则删除所述远程redis集群客户端的key对应的数据和ttl。
65.举例而言,本地redis集群客户端获取key对应的本地ttl为-2,则表示key不存在,远程redis集群客户端则执行删除命令,删除掉该key;如果ttl为-1,则表示key无过期时间,本地redis集群客户端获取key对应的本地value,远程redis集群客户端执行设置命令;如果ttl《3;则表示即将过期,sleep3s重新获取ttl进行处理;如果ttl》=3,则表示过期时间在3s之后,计算绝对过期时间,本地redis集群客户端获取key对应的本地value,远程redis集群客户端执行setex命令。
66.进一步的,如图7所示,本技术实施例步骤s741还包括:
67.步骤s7411:当匹配结果为第二类型命令时,进行所述本地redis集群客户端和所述远程redis集群客户端的key的field对应的数据和ttl比对,获得第二比对结果;
68.步骤s7412:当所述第二比对结果和所述本地redis集群客户端的key的field对应
的数据和ttl满足第二预设条件,则通过所述本地redis集群客户端的key的field对应的数据和ttl进行远程redis集群客户端设置。
69.具体而言,所述第二类型命令包括hset、hdel命令,当所述匹配结果为第二类型命令时,分发给hash处理器进行处理,通过所述本地redis集群客户端和所述远程redis集群客户端的key的field对应的数据和ttl比对,获得第二比对结果当所述第二比对结果和所述本地redis集群客户端的key的field对应的数据和ttl满足第二预设条件,其中,当本地redis集群客户端与远程redis集群客户端对比key的field对应的数据和ttl,如果比对结果不一致且本地redis集群客户端key的field对应的数据和ttl未过期或存在,则认为满足所述第二预设条件,此时使用本地redis集群客户端查询出来的数据和ttl设置到远程redis集群客户端,当不满足所述第二预设条件时,则删除远程redis集群客户端的该key的field。
70.举例而言,通过hash处理器,本地redis集群客户端通过hexists命令确认key对应的field是否存在,如果返回值为1表示存在,通过hget命令获取value,远程redis集群客户端执行hset命令设置value;如果返回值为0表示不存在该key,或者该key对应的field不存在,远程redis客户端执行hdel命令删除key对应的field。通过事务补偿,可以保证跨idc的rediscluster数据一致性,避免双写或者异步写导致的数据不一致问题,同时获得更高的同步效率,本地执行成功则立即同步到异地,达到更低的延迟的效果。
71.综上所述,本技术实施例所提供的一种基于事务id的双写技术方法及系统具有如下技术效果:
72.1、由于采用了获得第一客户端请求参数;通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;根据所述第一解析结果获得第一事务操作标识oid;通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis队列写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果。获得第一写入结果;判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。达到提供一种低成本的双写方案,在控制成本的前提下,保证跨idc的数据一致性的技术效果。
73.2、通过事务补偿,可以保证跨idc的rediscluster数据一致性,避免双写或者异步写导致的数据不一致问题,同时获得更高的同步效率,本地执行成功则立即同步到异地,达到更低的延迟的效果。
74.实施例二
75.基于与前述实施例中一种基于事务id的双写技术方法同样发明构思,本发明还提供了一种基于事务id的双写技术系统,如图8所示,所述系统包括:
76.第一获得单元11,所述第一获得单元11用于获得第一客户端请求参数;
77.第二获得单元12,所述第二获得单元12用于通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;
78.第三获得单元13,所述第三获得单元13用于根据所述第一解析结果获得第一事务
操作标识oid;
79.第四获得单元14,所述第四获得单元14用于通过本地redis集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;
80.第一判断单元15,所述第一判断单元15用于判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;
81.第二判断单元16,所述第二判断单元16用于判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。
82.进一步的,所述系统还包括:
83.第五获得单元,所述第五获得单元用于获得业务命名空间规则;
84.第六获得单元,所述第六获得单元用于根据所述第一解析结果,基于所述业务命名空间规则生成所述第一事务操作标识oid。
85.进一步的,所述系统还包括:
86.第七获得单元,所述第七获得单元用于根据所述业务命名空间规则获得所述第一解析结果对应的第一业务命名空间;
87.第八获得单元,所述第八获得单元用于根据所述第一业务命名空间获得所述本地redis队列,将所述第一事务操作标识oid进行所述本地redis队列写入。
88.进一步的,所述系统还包括:
89.第九获得单元,所述第九获得单元用于当所述第一写入结果执行失败时,获得第一删除指令;
90.第十获得单元,所述第十获得单元用于根据所述第一删除指令删除所述第一事务操作标识oid,并返回执行失败。
91.进一步的,所述系统还包括:
92.第十一获得单元,所述第十一获得单元用于获得事务操作标识oid检测指令,根据所述事务操作标识oid检测指令进行所述本地redis集群客户端的oid检测,获得第一检测结果;
93.第十二获得单元,所述第十二获得单元用于当所述第一检测结果为所述第一事务操作标识oid未被删除时,根据所述第一事务操作标识oid对应的所述本地redis队列获得第一消费端;
94.第十三获得单元,所述第十三获得单元用于基于所述第一消费端对所述第一事务操作标识oid解析,获得第二解析结果;
95.第一补偿单元,所述第一补偿单元用于根据所述第二解析解结果进行事务补偿。
96.进一步的,所述系统还包括:
97.第一匹配单元,所述第一匹配单元用于根据所述第二解析结果进行命令类型匹配;
98.第十四获得单元,所述第十四获得单元用于当匹配结果为第一类型命令时,进行所述本地redis集群客户端和所述远程redis集群客户端的key对应的数据和ttl比对,获得
第一比对结果;
99.第十五获得单元,所述第十五获得单元用于当所述第一比对结果和所述本地redis集群客户端的key对应的数据和ttl满足第一预设条件,则通过所述本地redis集群客户端的key对应的数据和ttl进行远程redis集群客户端设置;
100.第十六获得单元,所述第十六获得单元用于当所述第一比对结果和所述本地redis集群客户端的key对应的数据和ttl不满足第一预设条件,则删除所述远程redis集群客户端的key对应的数据和ttl。
101.进一步的,所述系统还包括:
102.第十七获得单元,所述第十七获得单元用于当匹配结果为第二类型命令时,进行所述本地redis集群客户端和所述远程redis集群客户端的key的field对应的数据和ttl比对,获得第二比对结果;
103.第十八获得单元,所述第十八获得单元用于当所述第二比对结果和所述本地redis集群客户端的key的field对应的数据和ttl满足第二预设条件,则通过所述本地redis集群客户端的key的field对应的数据和ttl进行远程redis集群客户端设置。
104.前述图1实施例一中的一种基于事务id的双写技术方法的各种变化方式和具体实例同样适用于本实施例的一种基于事务id的双写技术系统,通过前述对一种基于事务id的双写技术方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种基于事务id的双写技术系统的实施方法,所以为了说明书的简洁,在此不再详述。
105.示例性电子设备
106.下面参考图9来描述本技术实施例的电子设备。
107.图9图示了根据本技术实施例的电子设备的结构示意图。
108.基于与前述实施例中一种基于事务id的双写技术方法的发明构思,本发明还提供一种基于事务id的双写技术系统,下面,参考图9来描述根据本技术实施例的电子设备。该电子设备可以是可移动设备本身,或与其独立的单机设备,其上存储有计算机程序,该程序被处理器执行时实现前文所述方法的任一方法的步骤。
109.如图9所示,电子设备50包括一个或多个处理器51和存储器52。
110.处理器51可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备50中的其他组件以执行期望的功能。
111.存储器52可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器51可以运行所述程序指令,以实现上文所述的本技术的各个实施例的方法以及/或者其他期望的功能。
112.在一个示例中,电子设备50还可以包括:输入装置53和输出装置54,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
113.本发明实施例提供的一种基于事务id的双写技术方法,其中,所述方法包括:获得第一客户端请求参数;通过api封装客户端redis组件对所述第一客户端请求参数进行解析,获得第一解析结果;根据所述第一解析结果获得第一事务操作标识oid;通过本地redis
集群客户端进行所述第一事务操作标识oid的本地redis写入,当写入失败时,则返回执行失败;当写入成功时,通过本地redis集群客户端进行所述第一解析结果的redis命令写入,获得第一写入结果;判断所述第一写入结果是否执行成功,当所述第一写入结果执行成功时,通过远程redis集群客户端进行所述第一解析结果的redis命令写入,获得第二写入结果;判断所述第二写入结果是否执行成功,当所述第二写入结果执行成功时,则删除所述本地redis集群客户端的所述第一事务操作标识oid,并返回执行成功。解决了现有技术中存在方案成本过高,无法保证跨idc的数据一致性技术问题,达到提供一种低成本的双写方案,在控制成本的前提下,保证跨idc的数据一致性的技术效果。
114.通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、rom、ram、磁碟或者光盘等,包括若干指令用以使得一台计算机设备执行本技术各个实施例所述的方法。
115.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
116.所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从计算机可读存储介质向另计算机可读存储介质传输,所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
117.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
118.另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
119.应理解,在本技术实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
120.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件
和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
121.总之,以上所述仅为本技术技术方案的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1