【SpringCloud】Nacos负载均衡

5.5 Nacos 负载均衡

5.5.1 开启Nacos负载均衡策略

由于 Spring CloudLoad Balance 组件自身有负载均衡配置方式,所以不支持 Nacos 的负载均衡策略。
想使用 Nacos 负载均衡策略,需要我们先开启Nacos的负载均衡策略,也就是在远程调用方,咱们这里的 cook-service 的 .yml 配置文件中进行配置。

server:
  port: 8080
spring:
  application:
    name: cook-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # nacos 地址
    loadbalancer:
      nacos:
        enabled: true # 开启 nacos 的负载均衡策略

5.5.2 权重配置策略

Nacos 对每个节点的流量进行权重配置,每个节点默认权重是 1,权重越低,分配的流量也就越少。

接下来重启 cook-service 服务,然后在 Nacos 管理面板将 9091 端口的服务上线,然后将 9091 端口的节点权重改成 0.2。

在这里插入图片描述

改完后,刷新下配置页面:

在这里插入图片描述

接下来清空三个 waiter-service 的控制台日志,然后在浏览器多次访问 http:/127.0.0.1/cook/ok?content=给55号桌上可乐鸡翅,接着观察控制台打印的日志:

在这里插入图片描述

此时可以发现,端口号 9091 服务权重为 0.2,果不其然被分配的流量就很少了。这就是 Nacos 的权重配置策略。

5.5.3 同集群优先策略

Nacos把同⼀个机房内的实例,划分为⼀个集群。所以同集群优先访问,在⼀定程度上也可以理解为同机
房优先访问。

就拿咱们上面的 cook-service 8080 和 waiter-service 9090/9091/9092 这四个服务来说,咱们一直都是 cook-servic 远程调用 waiter-service 的服务,通过负载均衡自主选择具体调用哪个,咱们只需要在代码中写服务名即可。

对于同集群优先策略是个什么意思呢?咱们先看下面这张图:

在这里插入图片描述

这个两个地区的机房,上海机房部署了 cook-service 和 waiter-service 9090,北京机房部署了 waiter-service 9091 和 waiter-service 9092。

简单来说,小区附近开了三家同样品牌的奶茶店,第一家奶茶店就在小区楼下,距离 50 米,第二家和第三家奶茶店在隔壁小区,距离500米,这三家奶茶店提供的奶茶产品都是一样的,价格也是一样的,那么你自然不会去点 第二家和第三家奶茶点的产品了。注意,这个例子有点像物理上的距离,但是在 Nacos 同集群策略中,是采用逻辑区分的,也就是在配置文件中配置,上海机房和北京的机房配置的是同一个集群也可能会出现的。

这也就是 Nacos 的同集群优先策略,会优先访问在同一个集群中的服务节点,当同一个集群中的节点下线了,再去考虑其他集群的节点,当然同一个集群这样的节点可能有多个,只有这个集群的所有节点都挂了才调用其他集群节点。

通过 cluster-name 就能在配置文件中就可以进行配置所属集群名称了。按照上图所示,咱们把 cook-service 和 waiter-service 9090 配置成 SH 上海,把 waiter-service 9091 和 9092 配置成 BJ 北京。

server:
  port: 8080
spring:
  application:
    name: cook-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # nacos 地址
        cluster-name: SH # 配置集群名称
    loadbalancer:
      nacos:
        enabled: true # 开启 nacos 的负载均衡策略
server:
  port: 9090
spring:
  application:
    name: waiter-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # 配置 nacos 地址
        cluster-name: SH # 配置集群名称

接下来把 waiter-service 9091 和 9092 配置成 BJ,这两个直接在启动时指定参数就行了:

在这里插入图片描述

waiter-service 9092 也按照同样的方法设置就行,接下来启动 cook 和 waiter 共四个服务。

打开 Nacos 管理面板可以发现:

在这里插入图片描述

集群数目变了,接下来去查看 cook-service 和 waiter-service 的详情页面:

在这里插入图片描述

果然 cook-service 和 waiter-service 9090 都是在 SH 集群中,再来看看 waiter-service 9091 和 9092:

在这里插入图片描述

waiter-service 9091 和 9092 则在 BJ 集群中,按照 Nacos 的同集群优先策略,咱们此时去访问:

http://127.0.0.1:8080/cook/ok?content=给55号桌上可乐鸡翅

应该只会给 watier-service 9090 去分配流量,多次访问上述接口,查看 waiter-service 9090,9091,9092 的控制台日志输出情况:

在这里插入图片描述

果不其然,只有 9090 端口的服务收到了请求,只有当 9090 挂了,才会去给不同集群的 9091,9092 分配流量,这就是 Nacos 的同集群优先策略。

想测试 9090 挂了的情况,也很简单,直接让 9090 服务下线后,进行访问上述接口就 OK 了,此处就不做演示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿教你打篮球

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值