1. 什么是分布式事務
下單失敗,購物車還被清理了。不符合一致性。
2. seata的架構和原理
3. 部署TC服務
docker network ls
docker inspect mysql
mysql 在hm-net下,這里我的ncaos不是跟著視頻配的,因此需要。
docker network connect hm-net nacos
docker inspect nacos
部署:
docker run --name seata \
-p 8099:8099 \
-p 7099:7099 \
-e SEATA_IP=192.168.10.100 \
-v ./seata:/seata-server/resources \
--privileged=true \
--network hm-net \
-d \
seataio/seata-server:1.5.2
這里博主報錯了。。
大概率和防火墻有關,這里先重啟一下docker服務吧。
歐克,沒問題了。
4. 微服務集成seata
seata:registry: # TC服務注冊中心的配置,微服務根據這些信息去注冊中心獲取tc服務地址type: nacos # 注冊中心類型 nacosnacos:server-addr: 192.168.10.100:8848 # nacos地址namespace: "" # namespace,默認為空group: DEFAULT_GROUP # 分組,默認是DEFAULT_GROUPapplication: seata-server # seata服務名稱username: nacospassword: nacostx-service-group: hmall # 事務組名稱service:vgroup-mapping: # 事務組與tc集群的映射關系hmall: "default"
<!--統一配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--讀取bootstrap文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--seata--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>
購物車服務、交易服務、商品服務都需要改造。
spring:application:name: trade-service # 服務名稱profiles:active: devcloud:nacos:server-addr: 192.168.10.100 # nacos地址config:file-extension: yaml # 文件后綴名shared-configs: # 共享配置- dataId: shared-jdbc.yaml # 共享mybatis配置- dataId: shared-log.yaml # 共享日志配置- dataId: shared-swagger.yaml # 共享日志配置- dataId: shared-seata.yaml # 共享seata配置
修改application.yaml
server:port: 8085
feign:okhttp:enabled: true # 開啟OKHttp連接池支持sentinel:enabled: true # 開啟Feign對Sentinel的整合
hm:swagger:title: 交易服務接口文檔package: com.hmall.trade.controllerdb:database: hm-trade