概述

https://blog.zoutl.cn/483.html的基础上操作,前面的博客实现了调用库存微服务,现在再添加一个库存微服务实现库存微服务集群,在调用库存微服务时就自动实现了负载均衡,所以只需要实现库存微服务集群即可实现负载均衡

实现过程

添加的库存微服务的代码和之前的基本相同,要修改的地方如下:

  1. 修改微服务的端口,之前的是8082

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    server:
    port: 8083
    servlet:
    context-path: /

    spring:
    application:
    name: nacos-stock
    cloud:
    nacos:
    discovery:
    server-addr: 121.41.111.222:8848
  2. 修改启动类的名称,主要是方便辨认,不改也行,之前的名称是NacosStockApplication

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package com.ledao;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

    /**
    * @author LeDao
    * @company
    * @create 2022-03-28 19:45
    */
    @EnableDiscoveryClient
    @SpringBootApplication
    public class NacosStockApplication2 {

    public static void main(String[] args) {
    SpringApplication.run(NacosStockApplication2.class, args);
    }
    }
  3. 修改被调用的方法,为了易于辨认调用的是哪个微服务,之前的没有2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package com.ledao.controller;

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**
    * @author LeDao
    * @company
    * @create 2022-03-28 20:20
    */
    @RestController
    @RequestMapping("/stock")
    public class StockController {

    @RequestMapping("/test")
    public String test(String info) {
    return "库存模块2收到的消息: " + info;
    }
    }

结果

启动先添加的库存微服务模块,去Nacos注册中心界面查看服务列表

image-20220328214402070

通过localhost:8081/order/test调用,会发现交替调用两个库存微服务,此时已经实现了被调用的微服务集群以及调用时负载均衡

PS.

Nacos一些操作

点击服务列表的详情查看某个微服务的集群

image-20220328214907798

image-20220328214932977

修改微服务被调用的权重,点击上图的编辑,权重越大被调用的机会越大

image-20220328215146401

下线微服务,点击下图的下线或在上图中关闭上线

image-20220328215853636

指定命名空间以及名称

我们可以将服务注册到指定命名空间以及自定义集群的名称,在集群的微服务的配置文件中设置即可(集群下的所有微服务的配置文件都需要设置,调用的订单微服务也要设置命名空间,不在同一个命名空间就无法调用),看下面有注释的两个配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
port: 8082
servlet:
context-path: /

spring:
application:
name: nacos-stock
cloud:
nacos:
discovery:
server-addr: 121.41.111.222:8848
namespace: e4f40c45-6d6d-44dc-8bea-64511127824 #命名空间的id
cluster-name: LeDao #被调用微服务集群的名称,一定要相同,不然就不是一个集群了