nacos简易实现负载均衡

2年前 (2022) 程序员胖胖胖虎阿
168 0 0

目录

  • 一、什么是Nacos?
  • 二、Nacos下载和安装
    • 1. 使用Windows启动
    • 2. 验证nacos是否成功启动
  • 三、Nacos Discovery服务注册/发现
  • 四、简易实现负载均衡
    • 1. 注册者配置
    • 2. 注册者启动类
    • 3. 注册者业务层
    • 4. 消费者配置
    • 5. 消费者启动类
    • 6. 消费者业务层
    • 7. 开始调用接口
    • 8. 遇到问题解决
      • `java.net.UnknownHostException: nacos-provider`

一、什么是Nacos?

nacos简易实现负载均衡
英文全称:Dynamic Naming and Configuration Service
是由阿里巴巴团队开发的一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台
Nacos 提供了一系列简单易用的特性,能够帮助我们快速地实现动态服务发现、服务配置等功能。

二、Nacos下载和安装

—> 参考文档
—> github下载
—> 镜像下载

官方推荐的是下载 2.0.3稳定版本
nacos简易实现负载均衡

1. 使用Windows启动

cmd输入

startup.cmd -m standalone

nacos简易实现负载均衡
nacos简易实现负载均衡

2. 验证nacos是否成功启动

http://192.168.10.236:8848/nacos/index.html
账号:nacos , 密码:nacos
nacos简易实现负载均衡
nacos简易实现负载均衡

三、Nacos Discovery服务注册/发现

  1. 首先引入依赖:
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.1</version>
        </dependency>
  1. 配置nacos的地址:

nacos.discovery.server-addr=127.0.0.1:8848

  1. 在启动类上加上@EnableDiscoveryClient注解

nacos简易实现负载均衡

  1. 查看Nacos服务列表状态

nacos简易实现负载均衡
这样子就证明我们的端口作为服务注册到了Nacos中去了!

  1. 服务列表不显示问题

在确保Nacos正常启动,上述操作也配置完毕,还是没有显示服务名称等信息时,请检查spring-boot-starter-parent的版本:
nacos简易实现负载均衡

四、简易实现负载均衡

需要创建两个注册者(9001、9002)和一个消费者(8083)
nacos简易实现负载均衡

1. 注册者配置

server:
  port: 9001
Spring:
  application:
    name: nacos-provider
  cloud:
    discovery:
      server-addr: localhost:8848
management:
  endpoint:
    web:
      exposure:
        include: '*'

2. 注册者启动类

@EnableDiscoveryClient //开启服务的注册与发现功能
@SpringBootApplication
public class Port9001Application {
    public static void main(String[] args) {
        SpringApplication.run(Port9001Application.class, args);
    }
}

3. 注册者业务层

@RestController
public class Port9001 {
    @Value("${server.port}")
    private String serverPort;
    @GetMapping("/getPort")
    public String getServerPort(){
        return "调用端口 " + serverPort + " 成功!";
    }
}

4. 消费者配置

server:
  port: 8083
Spring:
  application:
    name: nacos-consumer
  cloud:
    discovery:
      server-addr: localhost:8848
#消费者将要去访问的微服务名称
service-url:
  nacos-user-service: http://nacos-provider

5. 消费者启动类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumer8083Application {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumer8083Application.class, args);
    }
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

6. 消费者业务层

@RestController
public class Port8083Controller {
    @Autowired
    private RestTemplate restTemplate;
    @Value("${service-url.nacos-user-service}")
    private String serverURL;
    @GetMapping(value = "consumer/nacos")
    public String getDiscovery(){
        /* 三个参数:填写访问的名称和url地址 + 调用接口的返回值类型 */
        return restTemplate.getForObject(serverURL+"/getPort",String.class);
    }
}

7. 开始调用接口

调用8083的/consumer/nacos
nacos简易实现负载均衡再次刷新该页面
nacos简易实现负载均衡
此处证明完成了远程的调用,同时具有负载均衡的效果!

8. 遇到问题解决

java.net.UnknownHostException: nacos-provider

依赖中加入spring-cloud-loadbalancer即可!
nacos简易实现负载均衡

版权声明:程序员胖胖胖虎阿 发表于 2022年10月20日 上午6:16。
转载请注明:nacos简易实现负载均衡 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...