Spring Cloud全文目录
定制软件文章持续更新中,欢迎关注!
一、简介
中,定制软件各个微服务会部署多个实例,定制软件如何将服务消费者均匀定制软件分摊到多个服务提供者实例上,定制软件就要使用到定制软件负载均衡器
Ribbon 是负载均衡器
,定制软件是一个基于HTTP和CP的客户端定制软件负载均衡工具
,它提供了很多算法,例如轮询、随即等,在配置服务提供者地址后,可以将服务消费者请求均匀的分发
Ribbon的架构图
Ribbon的核心组件IRule
IRule的七大负载算法
IRule接口有7个实现类,每个实现类代表一个负载均衡算法,默认使用轮询
什么是Load Balancer?
Load Balancer将用户访问分配至各个计算资源(例如服务器,数据库等)
Load Balancer为以下方面提供高效服务:
- 防止请求被发送到不正常的服务器
- 防止资源过载(resource overloading)
- 帮助消除单点故障(singlepoint of failure)
前边的文章,我们实现了消费者访问生产者集群轮询赋值均衡,具体的请。Ribbon就是实现服务端的负载均衡加RestTemplate的调用。是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,和Eureka结合只是其中的一个实例。
二、代码实例
1.添加规则类
注意: 官方文档明确给出了警告:
更改负载算法,由我们的默认轮询算法
换为随机算法
,需要自定义一个配置类。注意:这个自定义配置类不能放在 @ComponentScan 所扫描的当前包下以及子包下,否则自定义的配置类就会被所有的 Ribbon 客户端所共享,达不到特殊化定制的目的了。如下图:
新建MySelfRule
配置类,变为随机,如下图:
package com.dyh.myrule;import com.netflix.loadbalancer.IRule;import com.netflix.loadbalancer.RandomRule;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * 自定义负载均衡规则类 * * @ClassName: MySelfRule * @author: dyh * @since: 2021/12/16 20:53 */@Configurationpublic class MySelfRule { @Bean public IRule myRule() { // 负载均衡规则改为随机 return new RandomRule(); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
2.主启动类 OrderMain81 添加 @RibbonClient
在启动该的时候就能去加载我们的自定义 Ribbon 配置类,从而使配置生效
package com.dyh.springcloud;import com.dyh.myrule.MySelfRule;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.ribbon.RibbonClient;/** * @ClassName: OrderMain81 * @author: dyh * @since: 2021/12/15 13:06 */@SpringBootApplication@EnableEurekaClient//name为生产者服务的服务名称 configuration为配置类的类名@RibbonClient(name = "SPRINGCLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)public class OrderMain81 { public static void main(String[] args) { SpringApplication.run(OrderMain81.class, args); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
3.测试
那现在启动7001服务和7002服务,然后启动8001服务与8002服务,再启动81服务,访问路径,由原先的轮询8001服务与8002服务来回切换,变为了8001服务与8002服务随机访问。
简单集成Ribbon的负载算法就就完成啦。so easy!
下一篇文章学习OpenFeign服务接口调用,持续关注、点赞。我们持续更新中。