一种跨服务数据库事务的保证方法技术

技术编号:28447320 阅读:17 留言:0更新日期:2021-05-15 21:08
本发明专利技术公开了一种跨服务数据库事务的保证方法,其具体实现过程为:创建一个分布式事务控制器,来控制整个分布式事务的进行;前端请求通过nginx做负载均衡,再转发到web容器,web容器中单线程执行该请求;将分布式事务控制器做水平分布后形成一个集群对外提供服务,通过心跳检测将宕机的控制器从集群节点中剔除;使用redis做缓存,集群内共用该redis。本发明专利技术可以解决分布式事务的问题,实现对业务进行分布式架构的改造,进而大幅度的提升系统的性能,并且实现了分布式事务之后,可以对数据库进行水平分库,可以大幅度的改善运维成本。可以大幅度的改善运维成本。可以大幅度的改善运维成本。

【技术实现步骤摘要】
一种跨服务数据库事务的保证方法


[0001]本专利技术涉及分布式事务
,尤其涉及一种跨服务数据库事务的保证方法。

技术介绍

[0002]现有技术中,会通过将所有逻辑耦合在同一个服务里面,通过dao原生的事务来保证数据库的事务性。但是这样的话无法分摊流量的压力,服务的耦合性太高,整个系统存在单点问题,某个功能模块出问题所有服务都受到影响,数据库无法分库,单库的数据量过大,所以现提出了一种跨服务数据库事务的保证方法。

技术实现思路

[0003]基于
技术介绍
存在的技术问题,本专利技术提出了一种跨服务数据库事务的保证方法。
[0004]本专利技术提出的一种跨服务数据库事务的保证方法,其具体实现过程为:
[0005]创建一个分布式事务控制器,来控制整个分布式事务的进行;
[0006]前端请求通过nginx做负载均衡,再转发到web容器,web容器中单线程执行该请求;
[0007]将分布式事务控制器做水平分布后形成一个集群对外提供服务,通过心跳检测将宕机的控制器从集群节点中剔除;
[0008]使用redis做缓存,集群内共用该redis。
[0009]优选地,所述S1中分布式事务控制器,通过创建一条本次分布式事务的记录来标识本次分布式事务的进行,先把本次操作记录到StepList字段中,再做服务的操作。
[0010]优选地,所述S1中分布式事务控制器,在需要进行回滚的时候,将这条本次分布式事务的记录放到一个回滚的队列中,进行回滚时,根据StepList获取进行过的服务操作记录,发送到各自的服务进行回滚。
[0011]优选地,所述S1中分布式事务控制器,将整个分布式事务过程通过hdStatus记录的唯一标识uuid串联起来。
[0012]优选地,所述web容器为tomcat或resin中的一种。
[0013]本专利技术中的有益效果为:
[0014]1.通过创建分布式事务的控制器,可以解决分布式事务的问题,实现对业务进行分布式架构的改造,进而大幅度的提升系统的性能,并且实现了分布式事务之后,可以对数据库进行水平分库,可以大幅度的改善运维成本。
[0015]2.每个请求从初始化到结束在web容器中只会有一条线程执行该请求,从而避免了多线程环境下导致的并发问题,进而实现分布式控制器的无状态分布解决高并发问题。
[0016]3.使用redis做缓存,集群内共用该redis,可以解决数据一致性问题,进而实现高可用的架构。
附图说明
[0017]图1为本专利技术提出的一种跨服务数据库事务的保证方法单线程实现高并发的系统架构示意图;
[0018]图2为本专利技术提出的一种跨服务数据库事务的保证方法Redis+集群实现高可用的系统架构示意图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。
[0020]参照图1-2,一种跨服务数据库事务的保证方法,创建了一个中控服务命名为HdStatusSvr来控制整个分布式事务的进行,该服务主要负责以下几点功能:
[0021]a.创建一条记录来标识本次分布事务的进行称之为hdStatus记录,做任何一个服务的操作前必须先把本次操作记录到stepList字段中。
[0022]b.当需要进行回滚的时候,会将这条hdStatus记录放到一个回滚的队列中。进行回滚时根据stepList获取进行过哪些服务的操作,发送到各自的服务进行回滚。
[0023]c.整个分布式事务过程中通过hdStatus记录的唯一标识uuid串联起来。
[0024]本专利技术中,分布式事务控制器的高并发和高可用架构:
[0025](1)单线程实现高并发:前端所有的请求通过nginx做负载均衡后转发到web容器如tomcat、resin等,每个请求从初始化到结束在web容器中只会有一条线程执行该请求,从而避免了多线程环境下导致的并发问题,进而实现分布式控制器的无状态分布解决高并发问题,系统架构图见图1。
[0026](2)Redis+集群实现高可用:将分布式事务控制器做水平分布后形成一个集群对外提供服务,这样即使部分控制器出现宕机也不会影响到功能,通过心跳检测将宕机的控制器从集群节点中剔除,保证集群内处于健康的情况,并且使用redis做缓存,集群内共用该redis来解决数据一致性问题,进而实现高可用的架构,系统架构图见图2。
[0027]以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员在本专利技术揭露的技术范围内,根据本专利技术的技术方案及其专利技术构思加以等同替换或改变,都应涵盖在本专利技术的保护范围之内。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨服务数据库事务的保证方法,其特征在于,其具体实现过程为:创建一个分布式事务控制器,来控制整个分布式事务的进行;前端请求通过nginx做负载均衡,再转发到web容器,web容器中单线程执行该请求;将分布式事务控制器做水平分布后形成一个集群对外提供服务,通过心跳检测将宕机的控制器从集群节点中剔除;使用redis做缓存,集群内共用该redis。2.根据权利要求1所述的一种跨服务数据库事务的保证方法,其特征在于,所述S1中分布式事务控制器,通过创建一条本次分布式事务的记录来标识本次分布式事务的进行,先把本次操作记录到StepList字段中,再做服务...

【专利技术属性】
技术研发人员:吕源星邓崇良
申请(专利权)人:广州凡科互联网科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1