Seata 是阿里巴巴开源的一款分布式事务解决方案,旨在解决微服务架构下的数据一致性问题。此文件为 Seata 1.3.0 版本的压缩包,内含该版本的所有更新与功能改进。
Seata的高可用模式通过TC使用DB模式来共享全局事务会话信息,并利用非file类型的第三方注册中心和配置中心进行全局配置的分享。支持的第三方注册中心包括Nacos、Eureka、Redis、Zookeeper(简称zk)、Consul、Etcd3和Sofa,而支持的第三方配置中心有Nacos、Apollo、Zookeeper、Consul、Etcd3以及Custom选项。
官方推荐使用的是Nacos(由于两者同属一家),但由于个人习惯使用的注册中心是Zookeeper,因此这里考虑用zk来实现高可用模式。首先需要准备环境:
1. **安装和配置ZooKeeper**:如果本地已经安装了ZK可以跳过此步骤;否则,请自行百度如何在本地环境中搭建。
2. **数据库设置**:
- 创建名为seata的数据库;
- 运行Seata源码(版本1.2.0)目录下的script/server/db/mysql.sql文件来创建表global_table、branch_table和lock_table。
接下来是配置信息导入ZK:
- 编辑本地安装的Seata源码中的`script/config-center/config.txt`,将store.mode设置为db,并填写相应的数据库连接详情。
- 在`config/zk/`目录下执行命令sh zk-config.sh -h 127.0.0.1 -p 2181(注意替换-z参数以指向你的Zookeeper路径)。
启动TC Server:
编辑conf文件夹中的registry.conf,将注册和配置类型设置为zk,并填写正确的连接信息。接下来,在seata安装目录的bin中运行`./seata-server.sh -m db`来启动服务端模块。如果在1.2.0版本遇到序列化问题导致读取ZK配置失败的情况,请拉取最新的开发分支源码并编译生成Seata 1.3-SNAPSHOT版,然后重新导入配置信息。
进行高可用性测试时,需要同时运行多个TC Server实例,并通过修改启动接口和允许多线程执行来实现。在客户端服务中启用后,它们会向所有注册点发送TM和RM请求。若某节点故障前事务已提交,则系统将自动回滚该交易并记录日志。
对于更复杂的业务场景及集群部署环境下的表现,Seata仍需进一步验证其可靠性与适用性。尽管目前尚未提供控制台界面或配套的HA机制等辅助工具,但鉴于它在分布式事务处理中的潜力和灵活性,未来的发展值得期待。