掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 10:58:46


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

技术领域

本发明涉及分布式事务技术领域,尤其涉及一种跨服务数据库事务的保证方法。

背景技术

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

发明内容

基于背景技术存在的技术问题,本发明提出了一种跨服务数据库事务的保证方法。

本发明提出的一种跨服务数据库事务的保证方法,其具体实现过程为:

创建一个分布式事务控制器,来控制整个分布式事务的进行;

前端请求通过nginx做负载均衡,再转发到web容器,web容器中单线程执行该请求;

将分布式事务控制器做水平分布后形成一个集群对外提供服务,通过心跳检测将宕机的控制器从集群节点中剔除;

使用redis做缓存,集群内共用该redis。

优选地,所述S1中分布式事务控制器,通过创建一条本次分布式事务的记录来标识本次分布式事务的进行,先把本次操作记录到StepList字段中,再做服务的操作。

优选地,所述S1中分布式事务控制器,在需要进行回滚的时候,将这条本次分布式事务的记录放到一个回滚的队列中,进行回滚时,根据StepList获取进行过的服务操作记录,发送到各自的服务进行回滚。

优选地,所述S1中分布式事务控制器,将整个分布式事务过程通过hdStatus记录的唯一标识uuid串联起来。

优选地,所述web容器为tomcat或resin中的一种。

本发明中的有益效果为:

1.通过创建分布式事务的控制器,可以解决分布式事务的问题,实现对业务进行分布式架构的改造,进而大幅度的提升系统的性能,并且实现了分布式事务之后,可以对数据库进行水平分库,可以大幅度的改善运维成本。

2.每个请求从初始化到结束在web容器中只会有一条线程执行该请求,从而避免了多线程环境下导致的并发问题,进而实现分布式控制器的无状态分布解决高并发问题。

3.使用redis做缓存,集群内共用该redis,可以解决数据一致性问题,进而实现高可用的架构。

附图说明

图1为本发明提出的一种跨服务数据库事务的保证方法单线程实现高并发的系统架构示意图;

图2为本发明提出的一种跨服务数据库事务的保证方法Redis+集群实现高可用的系统架构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

参照图1-2,一种跨服务数据库事务的保证方法,创建了一个中控服务命名为HdStatusSvr来控制整个分布式事务的进行,该服务主要负责以下几点功能:

a.创建一条记录来标识本次分布事务的进行称之为hdStatus记录,做任何一个服务的操作前必须先把本次操作记录到stepList字段中。

b.当需要进行回滚的时候,会将这条hdStatus记录放到一个回滚的队列中。进行回滚时根据stepList获取进行过哪些服务的操作,发送到各自的服务进行回滚。

c.整个分布式事务过程中通过hdStatus记录的唯一标识uuid串联起来。

本发明中,分布式事务控制器的高并发和高可用架构:

(1)单线程实现高并发:前端所有的请求通过nginx做负载均衡后转发到web容器如tomcat、resin等,每个请求从初始化到结束在web容器中只会有一条线程执行该请求,从而避免了多线程环境下导致的并发问题,进而实现分布式控制器的无状态分布解决高并发问题,系统架构图见图1。

(2)Redis+集群实现高可用:将分布式事务控制器做水平分布后形成一个集群对外提供服务,这样即使部分控制器出现宕机也不会影响到功能,通过心跳检测将宕机的控制器从集群节点中剔除,保证集群内处于健康的情况,并且使用redis做缓存,集群内共用该redis来解决数据一致性问题,进而实现高可用的架构,系统架构图见图2。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种跨服务数据库事务的保证方法
  • 一种跨服务器系统、一种跨服务器方法和服务器
技术分类

06120112758852