alibaba-seata-1.1.0 体验

2020-04-15  本文已影响0人  粤海门明哥

Seata/Fescar 的发展历程

    阿里是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。

2014 年,阿里中间件团队发布 TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。

2016 年,TXC 经过产品化改造,以 GTS(Global Transaction Service) 的身份登陆阿里云,成为当时业界唯一一款云上分布式事务产品,在阿云里的公有云、专有云解决方案中,开始服务于众多外部客户。

2019 年起,基于 TXC 和 GTS 的技术积累,阿里中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。

TXC/GTS/Fescar 一脉相承,为解决微服务架构下的分布式事务问题交出了一份与众不同的答卷。

SETA  中间件解决什么问题?

    对业务无侵入: 这里的 侵入 是指,因为分布式事务这个技术问题的制约,要求应用在业务层面进行设计和改造。这种设计和改造往往会给应用带来很高的研发和维护成本。我们希望把分布式事务问题在 中间件 这个层次解决掉,不要求应用在业务层面做额外的工作。

高性能: 引入分布式事务的保障,必然会有额外的开销,引起性能的下降。我们希望把分布式事务引入的性能损耗降到非常低的水平,让应用不因为分布式事务的引入导致业务的可用性受影响。

更详细的请往这搂吧:https://github.com/seata/seata/wiki/%E6%A6%82%E8%A7%88

来吧安装吧

centos MySQL 安装 https://www.jianshu.com/p/55acbfe66ec2

cd /usr/local

wget https://github.com/seata/seata/releases/download/v1.1.0/seata-server-1.1.0.tar.gz

tar -xvf seata-server-1.1.0.tar.gz

创建MYSQL SEATA库,执行如下脚本创建全局事物等表

-- -------------------------------- The script used when storeMode is 'db' --------------------------------

-- the table to store GlobalSession data

CREATE TABLE IF NOT EXISTS `global_table`

(

    `xid`                      VARCHAR(128) NOT NULL,

    `transaction_id`            BIGINT,

    `status`                    TINYINT      NOT NULL,

    `application_id`            VARCHAR(32),

    `transaction_service_group` VARCHAR(32),

    `transaction_name`          VARCHAR(128),

    `timeout`                  INT,

    `begin_time`                BIGINT,

    `application_data`          VARCHAR(2000),

    `gmt_create`                DATETIME,

    `gmt_modified`              DATETIME,

    PRIMARY KEY (`xid`),

    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),

    KEY `idx_transaction_id` (`transaction_id`)

) ENGINE = InnoDB

  DEFAULT CHARSET = utf8;

-- the table to store BranchSession data

CREATE TABLE IF NOT EXISTS `branch_table`

(

    `branch_id`        BIGINT      NOT NULL,

    `xid`              VARCHAR(128) NOT NULL,

    `transaction_id`    BIGINT,

    `resource_group_id` VARCHAR(32),

    `resource_id`      VARCHAR(256),

    `branch_type`      VARCHAR(8),

    `status`            TINYINT,

    `client_id`        VARCHAR(64),

    `application_data`  VARCHAR(2000),

    `gmt_create`        DATETIME,

    `gmt_modified`      DATETIME,

    PRIMARY KEY (`branch_id`),

    KEY `idx_xid` (`xid`)

) ENGINE = InnoDB

  DEFAULT CHARSET = utf8;

-- the table to store lock data

CREATE TABLE IF NOT EXISTS `lock_table`

(

    `row_key`        VARCHAR(128) NOT NULL,

    `xid`            VARCHAR(96),

    `transaction_id` BIGINT,

    `branch_id`      BIGINT      NOT NULL,

    `resource_id`    VARCHAR(256),

    `table_name`    VARCHAR(32),

    `pk`            VARCHAR(36),

    `gmt_create`    DATETIME,

    `gmt_modified`  DATETIME,

    PRIMARY KEY (`row_key`),

    KEY `idx_branch_id` (`branch_id`)

) ENGINE = InnoDB

  DEFAULT CHARSET = utf8;

cd /opt/seata

vim /opt/seata/conf/file.conf

修改seata-server配置

启动服务(DB/FILE模式自己选择)

sh seata-server.sh -p 8091 -h 127.0.0.1 -m file &

GIT

project:https://github.com/seata/seata

seata-samples

https://github.com/seata/seata-samples

下载DEMO修改相关代码中的resouce 配置。基本上就是DB连接啊,SEATA SERVER啊。

记得在DEMO下面有对应的SQL脚本要先执行一下。

spring-boot for seata
上一篇 下一篇

猜你喜欢

热点阅读