美文网首页
Nacos 使用Fegin 远程调用、并负载均衡

Nacos 使用Fegin 远程调用、并负载均衡

作者: CodeYang | 来源:发表于2021-08-24 09:33 被阅读0次

    一、修改服务提供者层代码。

    1. 在启动类同级目录新建 controller文件夹,创建 ProviderController 。
    @RestController
    public class ProviderController {
    
        @Value("${server.port}")
        private String port;
    
        @RequestMapping("/provider/hello/{name}")
        public String hello(@PathVariable("name") String name){
            return name+" Welcome To ProviderController "+port;
        }
    }
    
    1. 为了测试负载均衡,我们又不想再创建一个服务提供者模块者时,就可以通过以下方法解决。
      修改当前这个服务提供者的 application.yml,把端口改为动态端口。
    server:
      port: ${prot:8001}  #未设置时,默认为8001
    
    1. 修改启动参数
      -Dprot=8001
    修改启动参数.png
    1. 我们就可以创建多个启动APP,进行启动

    二、修改消费者模块

    1. 使用 openfegin进行远程调用,pom 中新增 openfegin 依赖
        <!-- 远程调用 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
    
    1. 创建 service 服务,在启动类同级目录新建 service 文件夹,创建 ConsumerService 服务。

    FeignClient 注解中的值为远程服务名,
    接口中方法需要跟远程服务方法名相同。

    @FeignClient("cloud-provider")
    public interface ConsumerService {
        @RequestMapping("/provider/hello/{name}")
        public String hello(@PathVariable("name") String name);
    }
    
    1. 创建 controller 控制层代码,在启动类同级目录新建 controller文件夹,创建 ConsumerController 。

    这时就可以跟本地方法一样调用 service

    @RestController
    public class ConsumerController {
    
        //动态代理对象,内部远程调用服务生产者
        @Resource
        ConsumerService service;
    
        @GetMapping("/consumer/hello/{name}")
        public String hello(@PathVariable("name")String name){
            return service.hello(name)+" | ConsumerController";
        }
    }
    
    

    三、启动,观察 Nacos 是否注册成功。

    服务列表.png

    四、测试调用,观察负载均衡[轮询]

    第一次调用.png 第二次调用.png

    相关文章

      网友评论

          本文标题:Nacos 使用Fegin 远程调用、并负载均衡

          本文链接:https://www.haomeiwen.com/subject/tcwobltx.html