‘SEATA’ 全称 ‘Simple Extensible Autonomous Transaction Architecture’,简易可扩展的自治式分布式事务管理框架,其前身是fescar。阿里巴巴GTS的开源版实现,是一种分布式事务的解决方案。
seata主要由三个重要组件组成:
Transaction Coordinator(TC):管理全局的分支事务的状态,用于全局性事务的提交和回滚。
Transaction Manager™:事务管理器,用于开启全局事务、提交或者回滚全局事务,是全局事务的开启者。
Resource Manager(RM):资源管理器,用于分支事务上的资源管理,向TC注册分支事务,上报分支事务的状态,接受TC的命令来提交或者回滚分支事务。
前期注意事项
JDK版本必须是64位的
首先要确保你的JDK的版本是64位的,若是32位的将会导致启动seata的服务的时候内存溢出或者无法正常启动。
seata-server 1.2.0
下载
github: seata-server-1.2.0
网盘:seata-server-1.2.0(提取码:eufg)
创建seata-server所需表(这边是postgresql)
- the table to store GlobalSession data
DROP TABLE IF EXISTS "global_table";
CREATE TABLE "global_table" (
"xid" VARCHAR (128) NOT NULL,
"transaction_id" INT8,
"status" INT4 NOT NULL,
"application_id" VARCHAR (32),
"transaction_service_group" VARCHAR (32),
"transaction_name" VARCHAR (64),
"timeout" INT4,
"begin_time" INT8,
"application_data" text,
"gmt_create" TIMESTAMP,
"gmt_modified" TIMESTAMP,
PRIMARY KEY ("xid")
);
CREATE INDEX ON "global_table" ("gmt_modified", "status");
CREATE INDEX ON "global_table" ("transaction_id");
-- the table to store BranchSession data
DROP TABLE IF EXISTS "branch_table";
CREATE TABLE "branch_table" (
"branch_id" INT8 NOT NULL,
"xid" VARCHAR (128) NOT NULL,
"transaction_id" INT8,
"resource_group_id" VARCHAR (32),
"resource_id" VARCHAR (256),
"lock_key" VARCHAR (128),
"branch_type" VARCHAR (8),
"status" INT4,
"client_id" VARCHAR (64),
"application_data" text,
"gmt_create" TIMESTAMP,
"gmt_modified" TIMESTAMP,
PRIMARY KEY ("branch_id")
);
CREATE INDEX ON "branch_table" ("xid");
-- the table to store lock data
DROP TABLE IF EXISTS "lock_table";
CREATE TABLE "lock_table" (
"row_key" VARCHAR (128) NOT NULL,
"xid" VARCHAR (96),
"transaction_id" INT8,
"branch_id" INT8,
"resource_id" VARCHAR (256)<