Nacos-分级存储模型、集群优先负载均衡

一个服务可以有多个实例,例如我们的 user-service,可以有:

  • 127.0.0.1:8081
  • 127.0.0.1:8082
  • 127.0.0.1:8083

假如这些实例分布于全国各地的不同机房,例如:

  • 127.0.0.1:8081,在杭州机房
  • 127.0.0.1:8082,在杭州机房
  • 127.0.0.1:8083,在上海机房

Nacos就将同一机房内的实例,划分为一个集群

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:杭州机房内的 order-service 应该优先访问同机房的 user-service。

配置集群

接下来我们给两个杭州的 user-service 配置集群

修改 user-service 的 application.yml 文件,添加集群配置:

 spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称 HZ杭州

先手动重启两个 user-service 实例后,我们再去启动一个上海集群的实例。

本地复制配置模拟集群:(-D的意思是传入配置参数)

-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH

然后再启动运行 UserApplication3,至此就模拟上海的集群完了,两个杭州,一个上海

然后再查看 nacos 的服务详情 控制台:

 

详情内就会看到集群已经显示出来了,每个集群的实例也显示出来了。

下一个知识点:

但此时访问orderservice时他并不会优先访问HZ的集群(此时还是采用所有集群轮循的方式进行负载均衡,会有进入上海集群的问题),因为Ribbon的默认实现 ZoneAvoidanceRule 并不能实现根据同集群优先来实现负载均衡,我们把规则改成 NacosRule 即可。我们是用 orderservice 调用 userservice,所以在 orderservice 配置规则:

第一步要把orderservice也设置成HZ集群内的。

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

然后配置负载均衡规则(根据集群实现负载均衡,意思就是只是在HZ集训内实现负载均衡,除非杭州的集群都挂了,才会进入到其他地区集群)

第二步:

第一种方法在application中:

@Bean
public IRule iRule(){

    #负载均衡规则 随机的
    return new NacosRule();
}

第二种方法,你同样可以使用yml配置的形式来完成。

userservice:
  ribbon:

    #负载均衡规则 随机的
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

现在我启动了四个服务,分别是:

  • orderservice - HZ
  • userservice - HZ
  • userservice1 - HZ
  • userservice2 - SH

负载均衡的规则配置完了之后,再访问oderservice 试试。

访问地址:http://localhost:8080/order/101

在访问中我们发现,只有同在一个 HZ 集群下的 userservice、userservice1 会被调用,并且是随机的。

我们试着把 userservice、userservice1 停掉。依旧可以在userservice2 (上海)访问。

在 userservice2 控制台可以看到发出了一串的警告,因为 orderservice 本身是在 HZ 集群的,这波 HZ 集群没有了 userservice,就会去别的集群找(跨集群找到上海)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值