Nacos-NacosRule(服务集群一对一请求配置)

前言:

         假设A服务要拉取B服务,B服务有三个,按Eureka负载均衡来说,默认是轮循的,也就是说服务A拉去服务B三次,服务三个服务B都会接收到一次请求。

可以通过配置来改变配置负载均衡规则:

//负载均衡的配置,默认轮循

 @Bean

public IRule randomRule() {

return new RandomRule();//new  规则自定义

}

创建三个集群B,分为两组,第一组名叫:HZ,第二组名叫sh

按Nacos默认的负载均衡规则来说,服务A拉取三次服务B,会跟Eureka一样分别请求如图的三个服务各一次。

关于配置Nacos的集群相关配置,具体如下:


(除去了一些数据库配置,只展示nacos相关的配置)

集群配置:服务A

spring:
  application:
    name: oderservice  #服务A名称
  cloud:
    nacos:
      server-addr: localhost:8848  #nacos服务地址
      discovery:
        cluster-name: HZ #服务A集群的名称
userservice:   #服务B的名称,一定要对应哦
  ribbon:      #配置一对一访问
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule 


服务B 配置yml文件配置(注意,待会儿复制服务B最后一次的时候修改下面配置集群的名称):

spring:
  application:
    name: userservice  #服务B名称
  cloud:
    nacos:
      server-addr: localhost:8848  #nacos服务地址
      discovery:
        cluster-name: sh #服务B集群的名称

---------------------------------------------------------------------------------------

注意:注释掉你配置的负载均衡规则,否则该配置不生效,如下注释掉

//负载均衡的配置,默认轮循

/* @Bean

public IRule randomRule() {

return new RandomRule();

}*/


第一步,在idea最下面找到服务按钮,(我是汉化,你们英文的名称就叫service)

打开后,找到对应到B服务,然后右击复制:

然后将服务B复制两个出来,记得配置图片中-Dserver.port=端口号

然后点击确定,并启动服务

然后复制最后一个服务的时候,记得改集群名称,我起的名称是HZ

---------------------------------------------------------------------------------------

全部启动好后,启动nacos点击服务列表,展示效果如下:

然后测试一遍,让服务A发送给服务B  5次请求,看看会不会都访问到B服务集群中的HZ服务上

查看日志:

服务B集群中的HZ集群中实例的日志:

服务B集群中第一个的sh实例日志:

服务B集群中第二个的sh实例日志:

完美,因为A服务已经配置了服务名为HZ,并且还配置了对应的服务B,请求的时候,服务A会优先访问服务B中名为HZ的集群组中的实例,如果服务B中HZ集群中的服务都宕机了,那么才会访问服务B中的sh集群中的服务。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值