微服务-注册中心-nacos-发现-Feign

2,927 阅读1分钟

问题:

使用nacos作为注册中心

原理:

获取nacos里的服务实例信息
通过拼接数据等方式,访问对应的提供者服务。

文档:

nacos官方文档: https://nacos.io/zh-cn/docs/quick-start.html
关于Springboot,SpringCloud,SpringCloudAlibaba对应的版本关系地址:
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

步骤

1.下载nacos并启动
2.创建SpringBoot项目并添加依赖(2个依赖,SpringCloud和nacos)
3.设置nacos地址和启动注解
4.启动项目并查看是否成功注册
5.编写测试
6.使用Feign

前四步

前4步与 https://juejin.cn/post/6844904072148058119 基本一样。
区别就是配置文件中。
spring.application.name=nacos-consume
server.port=9871
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
项目名称与端口不一样。
5.编写测试
    通过负载均衡,提供者服务名称。得到注册中心的数据。
    手动拼接URl,然后通过Https访问测试的接口,查看是否成功。
    @Autowired
    LoadBalancerClient loadBalancerClient;

    /**
     * 方式1, 手动拼接
     *
     * @return
     */
    @GetMapping("/test")
    public String test() {
        // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
        ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-provider");
        String url = serviceInstance.getUri() + "/hello?name=" + "第一种方式";
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(url, String.class);
        return "Invoke : " + url + ", return : " + result;
    }

    启动两个项目后

     访问http://localhost:9871/test 查看是否生效。

6.使用Feign

    原理和上面一样。
    只不过是Feign封装了一成,看上去更加友好。
    消费者项目的配置文件中引用Feign
        <!--Feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    启动类添加@EnableFeignClients启动Feign

    编写测试接口

访问http://localhost:9871/test1 查看是否生效。