springcloud-03-ribbon(五大组件之一)

一.ribbon用来干什么?

        在上一章中我们讲到在80服务的配置类restTemplate Bean上添加@LoadBalanced注解可以赋予restTemplate负载均衡的能力,其中就是用到ribbon这个组件,eureka集成了ribbon这个组件后,许多东西我们不用再写

这一章我们单独来看ribbon这个组件,看看它是如何实现负载均衡的,一句话,我们自定义负载均衡

1.建工程 仿造80建一个84服务

2.写pom 84在80的基础上添加新依赖

 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
 </dependency>

3.写yaml  注册到eureka上

 4.主启动

接下来是重点的地方

5.1写sevice层

接口里面写一个获取服务实例的方法

 5.2接口实现类中写负载均衡的算法(不只有下面这种写法)

你要问为什么这样写? 呵呵~调皮!

         其实你仔细分析就会发现在下图中getRequestCount()方法中实现的效果就是类似a++的效果,这里返回的是请求次数,但为什么a++不行,因为a++是线程不安全的,不具备原子性,当程序并发时返回的请求数量永远小于实际的请求数,这里用AtomicInteger(创建原子性整数),如果current符合预期值,就将count赋给current并返回false(因为我们取反了 !,不取反会进入死循环)

 得到请求次数后,根据请求次数去模服务数量(注册到eureka上的服务提供者),得到服务的下标

然后根据服务的下标得到相应的服务实例并将其返回到controller层

6.  负载均衡的规则配置,这个包不要写在ComponentScan所扫描的包或子包下,否则会被所有搭载ribbon的客户端所共享,达不到特殊化目的

 

 7.配置类 这里面写restTemplate Bean,因为我们自定义了负载均衡,所有不用加@loadbalanced注解

在8001,8002分别写上获取端口号的方法 

 

 

8.写controller

 

9.修改主启动类 上加上@RibbonClient注解并写上服务名称,轮询规则

 

 10.测试 先启动7001,再启动8001,8002,最后启动84,通过eureka查看

 浏览器访问   http://localhost:84/cloud/lb,不断刷新,成功实现 8001,8002,8001,8002.... 轮询

 ribbon就讲到这里 如有错误还请斧正

下一章  openfeign

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值