nacos简易实现负载均衡


一、什么是Nacos?

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

二、Nacos下载和安装

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

官方推荐的是下载 2.0.3稳定版本
在这里插入图片描述

1. 使用Windows启动

cmd输入

startup.cmd -m standalone

在这里插入图片描述
在这里插入图片描述

2. 验证nacos是否成功启动

http://192.168.10.236:8848/nacos/index.html
账号: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注解

在这里插入图片描述

  1. 查看Nacos服务列表状态

在这里插入图片描述
这样子就证明我们的端口作为服务注册到了Nacos中去了!

  1. 服务列表不显示问题

在确保Nacos正常启动,上述操作也配置完毕,还是没有显示服务名称等信息时,请检查spring-boot-starter-parent的版本:
在这里插入图片描述

四、简易实现负载均衡

需要创建两个注册者(9001、9002)和一个消费者(8083)
在这里插入图片描述

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
在这里插入图片描述再次刷新该页面
在这里插入图片描述
此处证明完成了远程的调用,同时具有负载均衡的效果!

8. 遇到问题解决

java.net.UnknownHostException: nacos-provider

依赖中加入spring-cloud-loadbalancer即可!
在这里插入图片描述

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

建桥之魂

建桥人,建桥魂,建桥都是人上人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值