分布式事務解決方案之Seata

2021-10-05 16:19:41 字數 3808 閱讀 8165

seata 是一款開源的分布式事務解決方案,致力於提供高效能和簡單易用的分布式事務服務。seata 將為使用者提供了 at、tcc、saga 和 xa 事務模式,為使用者打造一站式的分布式解決方案。

兩階段提交協議的演變:

修改file.conf

service 

store

## database store property

#db資訊修改

db }

registry.conf

registry 

#修改eureka

redis

zk consul

etcd3

sofa

file

}config

consul

apollo

zk etcd3

file

}

建立資料庫,並建表

分支事務表

create table `branch_table` (

`branch_id` bigint(20) not null,

`xid` varchar(128) character set utf8 collate utf8_general_ci not null,

`transaction_id` bigint(20) default null,

`resource_group_id` varchar(32) character set utf8 collate utf8_general_ci default null,

`resource_id` varchar(256) character set utf8 collate utf8_general_ci default null,

`branch_type` varchar(8) character set utf8 collate utf8_general_ci default null,

`status` tinyint(4) default null,

`client_id` varchar(64) character set utf8 collate utf8_general_ci default null,

`gmt_create` datetime default null,

`gmt_modified` datetime default null,

primary key (`branch_id`) using btree,

key `idx_xid` (`xid`) using btree

) engine=innodb default charset=utf8 row_format=dynamic;

全域性事務表

create table `global_table` (

`xid` varchar(128) character set utf8 collate utf8_general_ci not null,

`transaction_id` bigint(20) default null,

`status` tinyint(4) not null,

`transaction_service_group` varchar(32) character set utf8 collate utf8_general_ci default null,

`transaction_name` varchar(128) character set utf8 collate utf8_general_ci default null,

`timeout` int(11) default null,

`begin_time` bigint(20) default null,

`gmt_create` datetime default null,

`gmt_modified` datetime default null,

primary key (`xid`) using btree,

key `idx_gmt_modified_status` (`gmt_modified`,`status`) using btree,

key `idx_transaction_id` (`transaction_id`) using btree

) engine=innodb default charset=utf8 row_format=dynamic;

全域性鎖create table `lock_table` (

`row_key` varchar(128) character set utf8 collate utf8_general_ci not null,

`xid` varchar(96) character set utf8 collate utf8_general_ci default null,

`transaction_id` bigint(20) default null,

`branch_id` bigint(20) not null,

`resource_id` varchar(256) character set utf8 collate utf8_general_ci default null,

`table_name` varchar(32) character set utf8 collate utf8_general_ci default null,

`pk` varchar(36) character set utf8 collate utf8_general_ci default null,

`gmt_create` datetime default null,

`gmt_modified` datetime default null,

primary key (`row_key`) using btree,

key `idx_branch_id` (`branch_id`) using btree

) engine=innodb default charset=utf8 row_format=dynamic;

表的結構不能錯。

接著改rm中的資料庫。在每個庫中增加。用於回滾。

用於rm回滾的。

create table `undo_log` (

`id` bigint(20) not null auto_increment,

`branch_id` bigint(20) not null,

`xid` varchar(100) character set utf8 collate utf8_general_ci not null,

`context` varchar(128) character set utf8 collate utf8_general_ci not null,

`rollback_info` longblob not null,

`log_status` int(11) not null,

`log_created` datetime not null,

`log_modified` datetime not null,

`ext` varchar(100) character set utf8 collate utf8_general_ci default null,

primary key (`id`) using btree,

unique key `ux_undo_log` (`xid`,`branch_id`) using btree

) engine=innodb default charset=utf8 row_format=dynamic;

啟動seata-server,(seata-server.bat)

業務方法上只需新增註解:@globaltransactional

微服務解決方案 分布式事務 Seata

seata is an easy to use,high performance,open source distributed transaction solution.seata 是乙個簡單易用的,高效能,開源的分布式事務解決方案。at模式是一種無侵入的分布式事務解決方案。在at模式下,使用者只...

分布式事務解決方案Seata集群搭建

tc server集群部署,實現高可用,生產環境必備,在集群是,多個seata tc server通過db資料庫,實現全域性事務會話資訊共享,每個seata tc server 可以註冊到註冊中心上,方便應用從註冊中心獲得到他們 seata tc server集群架構圖 seata tc serve...

分布式事務之 Seata

官網 seata 是一款開源的分布式事務解決方案,致力於在微服務架構下提供高效能和簡單易用的分布式事務服務。在 seata 開源之前,seata 對應的內部版本在阿里經濟體內部一直扮演著分布式一致性中介軟體的角色,幫助經濟體平穩的度過歷年的雙11,對各bu業務進行了有力的支撐。經過多年沉澱與積累,商...