
seata 1.3.0压缩包。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
Seata的高可用模式依赖于TC组件,通过共享全局事务会话信息的方式,利用非文件存储的Seata支持的第三方注册中心和配置中心来实现。Seata所支持的第三方注册中心包括nacos、eureka、redis、zk、consul、etcd3、sofa以及自定义选项,而支持的第三方配置中心则涵盖nacos、apollo、zk、consul、etcd3和自定义选项。官方推荐使用nacos作为注册中心,考虑到其与Seata同属一家公司;然而,由于个人日常使用的注册中心通常是zk,因此优先考虑采用zk作为注册中心来构建高可用模式。为了便于环境准备,如果本地已经安装了zk,则可以跳过安装步骤。数据库环境的准备工作包括:1. 创建名为seata的数据库;2. 执行server/db目录下的mysql.sql脚本,建立global_table、branch_table和lock_table表。配置信息导入zk:1. 打开本地Seata源码目录(版本1.2.0);2. 编辑script/config-center/config.txt文件,将store.mode修改为db,并更新store.db相关的数据库连接信息;其余配置项保持默认即可。3. 运行sh zk-config.sh -h 127.0.0.1 -p 2181 -z /usr/local/zookeeper-3.4.14命令将config.txt中的配置信息写入到zk的/seata节点下。启动TC-server:1. 修改conf目录下的registry.conf文件,将registry.type设置为zk,registry类型也设置为zk,并更新registry和config zk的相关信息;注意:config zookeeper配置中不应包含cluster属性。2. 在本地Seata安装目录bin目录下执行./seata-server.sh -m db启动TC-server(或者直接编译本地源码并启动Server模块下的Server类)。启动过程中可能会遇到反序列化问题,原因是序列化方式不一致。具体来说,使用Seata自带的zk-config.sh脚本向zk写入配置信息时采用String.getBytes()序列化方式,而框架读取配置时使用的是Zkclient客户端提供的SerializableSerializer序列化类进行反序列化。这种不一致性导致了问题出现。在1.3版本中解决了此问题:Seata支持自定义序列化方式并提供默认实现类DefaultZkSerializer,反序列化采用new String()方法。由于1.2版本无法继续推进开发,因此需要拉取最新的开发分支源码进行本地编译打包1.30-SNAPSHOT版本。后续版本应为1.30-SNAPSHOT(20200701),删除原zk配置信息并重新导入1.3版本的config 文件内容后进行本地源码编译并启动Server类 。 此外, 如果在启动过程中遇到getServerCharset 空指针异常, 则可能是MySQL和MySQL驱动版本不兼容导致的, 请参考https://blog..net/zcs20082015/article/details/107087589提供的解决方案进行处理 。 针对服务启动配置, 可以直接使用zhengcs-seata-storage模块作为演示示例, 并修改POM依赖引入zkclient, 修改application yaml 文件将注册和配置类型改为 zk , 同时需要注意的是 seata .tx -service -group 配置参数要与 zk 导入的配置文件参数保持一致 。 测试流程包括全局事务测试单元测试用例以及基本功能测试单元测试用例; 更详细全面的测试案例此处省略不做详述 。 高可用性是通过部署多个TC-server实例来实现的;通过修改启动接口参数并通过勾选Allow parallel run选项来开启多个实例后启动客服端服务; 客户端服务会同时向所有 TC server 节点注册TM 和 RM 。 如果在数据已提交但异常退出时中断对应的 TC server 节点, 会触发全局事务回滚操作; 客户端在执行过程中中断的情况则不同: 单节点部署下会导致 Seata库中的事务处理表残留事务记录, TC server 端日志会持续刷新的这些日志并且尝试回滚该事务; 然而如果客户端服务是集群部署, Seata可以正常完成事务回滚操作 。 总结来说, Seata对于简单分布式事务场景的高可用支撑是可靠的; 但在复杂的业务场景下仍需关注潜在问题 , 这需要实践和时间来验证 。 Seata目前缺乏控制台及配套HA机制 , 其发展方向尚待观察 ; Seata作为一个分布式事务解决方案具有一定的潜力 。 参考资料: https://seataio/docs 以及 https://githubcom/seata/seata
全部评论 (0)


