Skip to content
/ dts Public
forked from cumt-cx/dts

Spring Cloud For Distributed Transaction Service

License

Notifications You must be signed in to change notification settings

jorrellz/dts

This branch is 60 commits ahead of cumt-cx/dts:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

de75300 · Mar 14, 2018

History

68 Commits
Jan 23, 2018
Mar 9, 2018
Mar 13, 2018
Mar 7, 2018
Mar 14, 2018
Jan 12, 2018
Jan 12, 2018
Mar 12, 2018
Mar 12, 2018
Mar 6, 2018
Jan 8, 2018
Jan 12, 2018
Jan 8, 2018
Mar 5, 2018
Jan 8, 2018
Jan 8, 2018
Mar 6, 2018

Repository files navigation

概述

Dts是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题;
在单机数据库下很容易维持事务的 ACID特性,但在分布式系统中并不容易,DTS可以保证分布式系统中的分布式事务的 ACID 特性
交流QQ群:666255932,微信请加Software_King拉入

功能

  • 跨消息和数据库的分布式事务
    在某些业务场景中,需要进行多个 DB 操作的同时,还会调用消息系统,DB 操作成功、消息发送失败或者反过来都会造成业务的不完整
  • 跨服务的分布式事务
    业务完成服务化后,资源与客户端调用解耦,同时又要保证多个服务调用间资源的变化保持强一致,否则会造成业务数据的不完整,DTS支持跨服务的事务

详细说明

  • Dts Server:事务协调器。负责分布式事务的推进,管理事务生命周期
  • Dts Client:事务发起者。通过事务协调器,开启、提交、回滚分布式事务
  • Dts Resource:资源,包括数据库、MQ

Compile

   mvn install -Dmaven.test.skip=true

关于Sample

 详细请查看 sample

Quick Start

  • 客户端及资源端添加pom依赖
<dependency>
	<groupId>io.dts</groupId>
	<artifactId>dts-saluki-support</artifactId>
	<version>${dts.version}</version>
</dependency>
  • 在Dts客户端、Dts资源端、Dts服务端的启动参数加上-DZK_CONNECTION=127.0.0.1:2181,zookeeper的连接地址,Dts使用zookeeper来做集群管理

  • 客户端,在服务调用不同的接口添加@DtsTransaction注解,将两个服务调用纳入整个分布式事务管理

 @DtsTransaction
  public HelloReply callService() {
    HelloRequest request = new HelloRequest();
    request.setName("liushiming");
    HelloReply reply = helloService.dtsNormal(request);
    helloService.dtsException(request);
    return reply;
  }

  • 资源端,针对数据库资源,使用Dts的适配DtsDataSource来使数据库连接池转变为Dts资源
  1. 执行script/resource.sql脚本
  2. 将数据库连接池适配为Dts资源端 ,如下示例:
  @Bean
  @Primary
  public DataSource dataSource() {
    DruidDataSource datasource = new DruidDataSource();
    int startIndex = dbUrl.lastIndexOf("/");
    String databaseName = dbUrl.substring(startIndex + 1, dbUrl.length());
    datasource.setConnectionProperties(connectionProperties);
    return new DtsDataSource(datasource, databaseName);
  }

  • 服务端,针对spring boot直接启动Main,将事务协调器启动起来
  1. 执行script/server.sql脚本
  2. 启动事务协调器服务端

About

Spring Cloud For Distributed Transaction Service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.2%
  • Other 0.8%