案例分析003 fegin调用404

背景介绍:

Nacos在springcloud项目中发挥着注册中心和配置中心的作用,作为配置中心将配置从应用中抽离出来,交给nacos统一的来管理配置,可以配置多套环境,发生改变各个微服务各自到nacos配置中心拉取相关配置,实现配置中心化避免频繁修改配置文件;作为注册中心实现服务调用者对服务提供者远程调用,项目中出现了两台使用同一个命名空间的nacos只更新了一台,导致请求到了没更新的那一台导致了404问题的出现。

案例分析003 fegin调用404_第1张图片

问题复盘:

接下来借用一个例子来模拟fegin调用404的情况。

项目中是3台nacos的集群,此处搭建两个不同端口号的nacos模拟集群,端口号分别为8848和8850,配置nacos集群的持久化配置:搭建mysql虚拟机,navacat连接,执行nacos的cof目录下的nacos-mysql.sql文件:

案例分析003 fegin调用404_第2张图片

修改nacos的conf目录下的 application.properties,并指定数据源配置。

启动8848和8850

案例分析003 fegin调用404_第3张图片

新建命名空间:

案例分析003 fegin调用404_第4张图片

准备相同的两个实例命名为,test1和test2,配置分别如下

test01

server:
  port: 9023

spring:
  application:
    name: consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1
      config:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1

server:
  port: 9009

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.25.146:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
  application:
    name: provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1
      config:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1

test02

server:
  port: 9024

spring:
  application:
    name: consumer

  cloud:
    nacos:
      discovery:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1
      config:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1

server:
  port: 9010

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.25.146:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
  application:
    name: provider

  cloud:
    nacos:
      discovery:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1
      config:
        server-addr: 192.168.25.151:8848,192.168.25.151:8850
        namespace: kongjian1

启动项目服务注册成功

案例分析003 fegin调用404_第5张图片

接下来修改test02的@GetMapping注解,重启并注册到nacos

@RestController
@RequestMapping("/provider")
public class UserController {

    @GetMapping("/post")
    public String findAll() {
        return "调用成功";
    }

}

这里采用的负载均衡策略是默认的权重为1:

案例分析003 fegin调用404_第6张图片

消费者调用生产者的方法,当consumer调用到test02注册到nacos的方法时就会出现404的情况。

总结:

nacos主要功能:

  1. 服务发现和服务健康监测:对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。

  1. 动态配置服务:配置中心化,配置变更时不需要重新部署应用和服务

  1. 动态DNS服务

  1. 服务及其元数据管理

你可能感兴趣的:(springcloud,微服务,spring,cloud)