Seata启动后会停服(或seata启动失败的原因以及解决方案): failed to req API:/nacos/v1/ns/instance after all servers...

1.问题如下:Seata启动后会停服·

请添加图片描述

2.可能原因:

(1) nacos没有启动;
(2) seata配置文件里nacos和nacos启动的不一致

3.解决方案

(1)如果nacos没有启动就启动nacos。比如:下面启动容器nacos627

 docker start nacos627

(2) 如果seata配置文件里nacos和nacos启动的不一致情况:
方法1:修改配置文件的seata.registry. nacos.server-addr的属性值为启动的nacos。具体如下:

a.查看自己启动的nacos

docker ps

在这里插入图片描述b.把配置文件的seata.registry. nacos.server-addr的属性值修改为启动的nacos 比如我这里是nacos627
在这里插入图片描述
方法2:修改配置文件的seata.registry. nacos.server-addr的属性值为启动的虚拟机的ip地址 (不推荐)

另外补充知识:Seata是干什么用的?

Seata是解决分布式事务出现的问题的。比如分布式系统中的购物车后的提交订单功能:先在订单服务要添加订单数据(当前服务,没有远程调用),然后在购物车服务里删除购物车对应数据,然后再在商品服务里的扣除库存。如果扣除库存出问题了,添加事务化本服的会回滚,但购物车服务的购物车数据不会被回滚,这就是分布式事务问题。使用Seata的AT或XA模式后,就可以解决了,也就是如果扣除库存出问题了,不仅本服的添加订单数据会回滚,而且购物车服务的购物车数据也会被回滚。(注意 远程调用的也要开启分布式事务)

猜你喜欢

转载自blog.csdn.net/pursuedream6/article/details/140133507