Seata是一款分布式事务解决方案,提供了对Spring Cloud、Dubbo等微服务框架的支持。本篇攻略将详细讲解Seata-1.4.0的安装及在Spring Cloud中的使用方法。
可以从官网 http://seata.io/zh-cn/ 下载Seata-1.4.0的安装包。
解压文件到指定文件夹,例如解压到 /usr/local/seata 目录中。
进入 /usr/local/seata/conf 目录,编辑 file.conf 文件,并修改 mode、store.mode 和 store.file.mode 三个参数的值,让它们都等于 file:
```
## transaction log store
store {
## store mode: file、db
## store.mode = "file"
mode = "file"
## file store
file {
## store location dir
dir = "sessionStore"
## branch session size , if exceeded first try compress lockkey and retry write acoss different files
max-branch-session-size = 16384
## file size threshold, above which it is divided into multiple files
file-size-limit = "16MB"
## flush disk mode, sync、async
flush-disk-mode = async
## flush interval, unit ms
flush-disk-interval = 1000
## compression type, none、gzip
compress = none
## branch session expire time ,the unit is minute
max-branch-session-age = 1440
## file store mode: memory,mmap
store-file-mode = "file"
}
}
```
进入 /usr/local/seata/bin 目录,并执行以下命令:
sh seata-server.sh -p 8091 -m file
即可启动Seata服务。
在 Spring Boot 项目的 pom.xml 文件中,添加以下依赖:
xml
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>1.4.0</version>
</dependency>
在Spring Boot项目的配置类中添加注解@EnableAutoDataSourceProxy和@EnableSeata ,示例如下:
java
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableAutoDataSourceProxy
@EnableSeata
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
在项目的 application.yml 文件中配置Seata的参数,示例如下:
yaml
spring:
cloud:
alibaba:
seata:
tx-service-group: my_test_tx_group
seata:
enabled: true
application-id: order-service
tx-service-group: my_test_tx_group
config:
type: file
file:
name: 'file:/usr/local/seata/conf/registry'
service:
vgroupMapping.my_test_tx_group: default
default.grouplist: 127.0.0.1:8091
在需要进行分布式事务管理的方法上添加@GlobalTransactional注解,示例如下:
java
@Service
public class OrderService {
@GlobalTransactional
public String createOrder(OrderInfo orderInfo) {
// 业务代码
}
}
使用Postman或其他工具发送POST请求:
POST http://localhost:9500/order/create
{
"skuId": 1,
"count": 2,
"totalAmount": 100
}
如果返回结果成功,那么Seata在Spring Cloud中的配置就已经完成了。
以下是两个使用Seata的简单示例:
在一个微服务中需要对多个服务进行调用,要保证这些调用全部成功或全部失败。这时,可以使用Seata对分布式事务进行管理,保证数据的一致性和完整性。
在执行订单操作的时候,需要对商品库存进行检查,如果库存不足则不能执行订单操作。此时,可以使用Seata对商品库存的操作进行管理,保证在执行订单的同时,库存数量得到正确的维护。
本文链接:http://task.lmcjl.com/news/18828.html