SpringCloud系列(七) 使用Ribbon实现负责均衡

公众号

关注公众号和我一起学习哦!
公众号


什么是负载均衡?

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。

为什么需要负载均衡?

随着互联网时代的来临,为了扛得住高并发,高请求访问量,我们开发的项目随之演变为一个一个的微服务,微服务可以单独部署,那么怎么样才可以实现负载均衡呢?

答案是:使用Ribbon


一、添加配置

1. 在 application.yml 中添加 Ribbon 的配置

# 配置负载均衡
user-provider: # 要进行负载均衡的 服务名
  ribbon:
    #配置哪种类型的负载均衡策略
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

要使用哪种策略只需要更改后边的策略类即可

com.netflix.loadbalancer.xxx策略类

策略类表格在下方


二、修改项目

由于 Eureka-Client的依赖中已经包含了 Ribbon的依赖 所以我们无需手动添加

1. 修改 user-provider中的 sayHi接口

// 使用 Spring EL 表达式 注入该项目运行的端口号
@Value("${server.port}")
public String port;

// 修改 sayHi接口 返回结果添加新的内容:port
@Override
@RequestMapping("/sayHi")
public String sayHi(@RequestParam("content") String content, @RequestParam("age") Integer age) {
    System.out.println("9000");
    return "Hello Spring Cloud Netflix!" + content + "\t" + age + "\t我来自:" + port;
}

2. 修改 IDEA 配置 可以让项目一个启动多次

找到 IDEA 顶部导航栏 -> RUN -> Edit Configurations -> 找到 SpringCloudNetflixUserProvider -> 勾上 All parallel run -> Apply -> OK 即可


3. 先启动一个项目 确保启动成后

4. 修改 application.yml 中的 端口号 再次启动

两个 user-provider 启动成功后 注册中心的样子

5. 测试访问 user-consumer 的 sayHi接口 查看返回结果的端口号

会出现 随机的情况 即为成功

三、负载均衡策略

Ribbon有7种负载均衡策略可供选择:

策略类命名描述
RoundRobinRule轮询策略(Ribbon默认的策略)按照顺序选择server
RandomRule随机策略随机选择server
RetryRule重试策略在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server
BestAvailableRule最低并发策略逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server
AvailabilityFilteringRule可用过滤策略过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)
ResponseTimeWeightedRule响应时间加权重策略根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间
ZoneAvoidanceRule区域权重策略综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值