## 概念 **Seata**是**阿里巴巴**开源的**分布式事务**中间件,以**高效**并且对业务**0 侵入**的方式,解决**微服务**场景下面临的分布式事务问题。附上项目github链接 > [https://github.com/seata](https://github.com/seata) 目前Seata还处于不断开源升级中,并不建议在线上使用,生产环境可以考虑使用阿里云商用的GTS,可以考虑在V1.0,即服务端HA集群版本进行线上使用 ## Seata解决方案 解决分布式事务问题,有两个设计初衷 * 对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入 * 高性能:减少分布式事务解决方案所带来的性能消耗 Seata中有两种分布式事务实现方案,AT及TCC * AT 模式主要关注多 DB 访问的数据一致性,当然也包括多服务下的多 DB 数据访问一致性问题 * TCC 模式主要关注业务拆分,在按照业务横向扩展资源时,解决微服务间调用的一致性问题 <br> ## 启动Seata-Server 1. 前往官方项目主页下载最新版并解压:[https://github.com/seata/seata/releases](https://github.com/seata/seata/releases) 2. 修改目录下 **conf/registry.conf** 配置 * 默认为file模式,这里我们改为nacos模式,从注册中心动态获取相关配置 ~~~ registry { # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa type = "nacos" nacos { serverAddr = "localhost" namespace = "" cluster = "default" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "nacos" nacos { serverAddr = "localhost" namespace = "" } } ~~~ 3. 修改目录下 **conf/nacos-config.txt** 配置 ![](https://img.kancloud.cn/92/f5/92f50731a1c5d691a5ffd75c6c74f3a0_1280x1188.png) * 注意 **service.vgroup_mapping.${your-service-gruop}=default**,中间的 **${your-service-gruop}** 为自己定义的服务组名称,SpringBlade默认为service-name-group的格式。 * 若服务名为`blade-demo`,则这里配置的 **${your-service-gruop}** 为`blade-demo-group` * 比如截图中的两个服务,分别是blade-desk和blade-flow,他们对应的配置如下 ~~~ service.vgroup_mapping.blade-desk-group=default service.vgroup_mapping.blade-flow-group=default ~~~ * 修改store.mode=db * 修改对应数据库连接、账号、密码 4. 执行命令初始化nacos配置 ~~~ > sh nacos-config.sh 127.0.0.1 ~~~ ![](https://img.kancloud.cn/54/7b/547b8c8e102912977af6a7f1c3e926d8_1032x1016.png) **注意**:win下的nacos会有问题,需要将脚本做如下修改才能同步到配置 ![](https://img.kancloud.cn/50/88/5088e4419dd881b00ce0e9cd3cb4ecd2_1808x1106.png) ~~~ URL="http://$nacosIp:8848/nacos/v1/cs/configs?dataId=$key&group=SEATA_GROUP&content=$value" URL=${URL%$'\r'} result=`curl -X POST ${URL}` ~~~ 5.刷新nacos查看配置,发现已经自动生成了一批SEATA-GROUP组下的配置,说明配置成功 ![](https://img.kancloud.cn/78/96/7896e508b2c6675c61f132c490e34fdd_2112x1316.png) 6. 初始化数据库 * 按照nacos-config.txt内数据库配置,创建对应数据库 * 执行`conf/db_store.sql`中的脚本 ![](https://img.kancloud.cn/d1/c9/d1c900455cbdc025fc6b3b9478768168_1280x1324.png) ![](https://img.kancloud.cn/34/d7/34d788ef7c9c27f9ff7a6d00df809f7b_1676x1576.png) ![](https://img.kancloud.cn/77/cc/77ccefa98a28bba4604c1ec0a959f75e_1280x1004.png) ![](https://img.kancloud.cn/09/f2/09f243210bc70252b4ca6b62022d9279_1986x406.png) 7. 启动`seata-server` ~~~ > sh seata-server.sh -p 8091 -h 127.0.0.1 ~~~ ![](https://img.kancloud.cn/06/eb/06eb9e3308724fe8a64e63bd897dbb8e_2560x1338.png)