背景介绍:
Nacos在springcloud项目中发挥着注册中心和配置中心的作用,作为配置中心将配置从应用中抽离出来,交给nacos统一的来管理配置,可以配置多套环境,发生改变各个微服务各自到nacos配置中心拉取相关配置,实现配置中心化避免频繁修改配置文件;作为注册中心实现服务调用者对服务提供者远程调用,项目中出现了两台使用同一个命名空间的nacos只更新了一台,导致请求到了没更新的那一台导致了404问题的出现。
问题复盘:
接下来借用一个例子来模拟fegin调用404的情况。
项目中是3台nacos的集群,此处搭建两个不同端口号的nacos模拟集群,端口号分别为8848和8850,配置nacos集群的持久化配置:搭建mysql虚拟机,navacat连接,执行nacos的cof目录下的nacos-mysql.sql文件:
修改nacos的conf目录下的 application.properties,并指定数据源配置。
启动8848和8850
新建命名空间:
准备相同的两个实例命名为,test1和test2,配置分别如下
test01
server:port: 9023spring:application:name: consumercloud:nacos:discovery:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1config:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1
server:port: 9009spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.25.146:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: rootapplication:name: providercloud:nacos:discovery:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1config:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1
test02
server:port: 9024spring:application:name: consumercloud:nacos:discovery:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1config:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1
server:port: 9010spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.25.146:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: rootapplication:name: providercloud:nacos:discovery:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1config:server-addr: 192.168.25.151:8848,192.168.25.151:8850namespace: kongjian1
启动项目服务注册成功
接下来修改test02的@GetMapping注解,重启并注册到nacos
@RestController
@RequestMapping("/provider")
public class UserController {@GetMapping("/post")public String findAll() {return "调用成功";}}
这里采用的负载均衡策略是默认的权重为1:
消费者调用生产者的方法,当consumer调用到test02注册到nacos的方法时就会出现404的情况。
总结:
nacos主要功能:
服务发现和服务健康监测:对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
动态配置服务:配置中心化,配置变更时不需要重新部署应用和服务
动态DNS服务
服务及其元数据管理
上一篇:Timing Borrow的理解
下一篇:原创 美味蒸饺子,比煮的更好吃