首页 > 其他分享 >day06-SpringCloud Ribbon

day06-SpringCloud Ribbon

时间:2023-04-10 18:37:09浏览次数:53  
标签:负载 LB SpringCloud 轮询 day06 server 均衡 Ribbon

SpringCloud Ribbon

1.Ribbon介绍

1.1Ribbon是什么?

官网地址:Netflix/ribbon: Ribbon(github.com)

  1. SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具
  2. Ribbon 主要功能是提供客户端负载均衡算法和服务调用
  3. Ribbon 客户端组件提供一系列完整的配置项如连接超时,重试等
  4. Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务
  5. 程序员很容易使用 Ribbon 的负载均衡软法实现负载均衡

一句话:Ribbon = 负载均衡 + RestTemplate 调用

Ribbon 目前进入维护模式,未来替换方案 是 Spring Cloud LoadBalancer

1.2LB(Load Balance)-负载均衡

负载均衡(LB)的分类:

  1. 集中式LB

    即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx),由该设施负责把访问的请求通过某种策略转发至服务的提供方。

  2. 进程内LB

    将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后再从这些地址中选择出一个合适的服务地址。Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

    前面 member-consumer 轮询负载访问 10000/10002 底层就是 Ribbon 默认的轮询负载算法

2.Ribbon原理

2.1Ribbon架构图&机制

image-20230410172653996

Ribbon 机制:

  1. 消费者先选择 EurekaServer,它优先选择在同一个区域内负载较少的 server
  2. 再根据程序员指定的策略,在从 server 取到的服务注册列表中选择一个地址
  3. Ribbon 提供了多种策略∶ 比如轮询、随机和根据响应时间加权。

2.2Ribbon常见负载算法

策略名 描述
BestAvailableRule 选择一个最小并发请求的server。逐个考察server,如果server被tripped(跳闸)了,则忽略,再选择其中ActiveRequestsCount最小的Server
AvailabilityFilteringRule 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的后端server(active connections超过配置的阈值)
WeightedResponseTimeRule 根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低
RetryRule 对选定的负载均衡策略机上重试机制。在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server
RoundRobbinRule 轮询index,选择index对应位置的server
RandomRule 随机选择一个server,在index上随机,选择index对应位置的server
ZoneAvoidanceRule 复合判断server所在区域的性能和server的可用性,来选择server

3.切换负载均衡算法-应用实例

需求:将默认的轮询算法改为随机算法RandomRule,浏览去访问消费方,要求消费方访问服务方端口是随机的

(1)创建消费方的RibbonRule.java,指定负载均衡的策略

package com.li.springcloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 李
 * @version 1.0
 * 配置自己的负载均衡算法
 */
@Configuration
public class RibbonRule {
    //注入指定的均衡算法
    @Bean
    public IRule myRibbonRule(){
        //这里指定RandomRule
        return new RandomRule();
    }
}

(2)在主程序中使用注解指定Ribbon的配置

在上面RibbonRule的配置是全局的,不在主程序中配置也可以使用,这里在主程序中指定只是更加明确

image-20230410180637555

标签:负载,LB,SpringCloud,轮询,day06,server,均衡,Ribbon
From: https://www.cnblogs.com/liyuelian/p/17303904.html

相关文章

  • 13-springcloud-eureka-9-Eureka集群注册中心打包发布
    在实际项目中,需要将Eureka发布到具体服务器上进行部署,打包部署其实和SpringBoot里面的一样,我们可以把其达成jar包,启动时对于properties文件,不同的环境激活不同的配置文件;运行:java-jarspringcloud-service-eureka.jar--spring.profiles.active=eureka8761java-jarspringclo......
  • Ribbon的负载均衡策略:
    RoundRobinRule:默认轮询的方式。RandomRule:随机方式。WeightedResponseTimeRule:根据响应时间来分配权重的方式,响应的越快,分配的值越大。BestAvailableRule:选择并发量最小的方式。RetryRule:在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的ser......
  • Idea点击Run或者Debug无法启动项目_调试按钮按下以后变灰色_一会又恢复成绿色_但项目
    这个现象很烦人,点击了无数次了,就是项目启动不起来,很郁闷后来终于弄明白了,是这里,点击settings,然后找到这个runner这里,然后左上角这个delegateIDE...这个把勾去掉,去掉就可以了. 可以看到去掉以后,然后再点击运行可以看到,就已经显示正在运行中了. 终于弄好~......
  • ava: 程序包com.alibaba.nacos.api.common不存在_RuoYi-Cloud-Plus-master_jar包不存
    来看看原因吧,jar包是存在的,但是就是在idea中引用不到,来看看怎么回事: 原来就是这个包找不到,但是从下面看是有的: 但是注意,这里的com.alibaba.nacos.api...原来可不是这样的,这个是我后来修改过的,原来是只有com.alibaba.nacos.common,而引用的是com.alibaba.nacos.api.commo......
  • ruoyi-cloud微服务版启动过程报错_20230320版_ Verion 9 of Highlight.js has reached
      Verion9ofHighlight.jshasreachedEOL. Itwillnolonger报错: 这里修改成10.7.3版本D:\2023\qdBigData\RuoYi-Cloud-master\ruoyi-ui>npminstall--registry=https://registry.npm.taobao.org然后到对应目录,再去执行编译去看看.不报错了 >npmrundev然后执行看......
  • SpringCloud使用Consul作为配置中心
    Consul提供了一个key/value存储,用于存储配置和其他元数据。SpringCloudConsulConfig是ConfigServer和Client的替代方案。在特殊的“bootstrap”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config文件夹中。根据应用程序的名称和模拟SpringCloud配置顺序解析财产的......
  • SpringCloud源码学习笔记3——Nacos服务注册源码分析
    系列文章目录和关于我一丶基本概念&Nacos架构1.为什么需要注册中心实现服务治理、服务动态扩容,以及调用时能有负载均衡的效果。如果我们将服务提供方的ip地址配置在服务消费方的配置文件中,当服务提供方实例上线下线,消费方都需要重启服务,导致二者耦合度过高。注册中心就是在......
  • springCloud之Consul简介
    Consul是什么Consul是HashiCorp公司推出的开源工具。HashiCorpConsul是一种服务网络解决方案,使团队能够管理服务之间以及跨预处理和多云环境和运行时的安全网络连接。Consul为网络基础设施设备提供服务发现、服务网格、流量管理和自动更新。您可以单独使用这些功能,也可以在单个C......
  • day05-SpringCloud Eureka-服务注册与发现02
    SpringCloudEureka-服务注册与发现023.搭建EurekaServer集群-实现负载均衡&故障容错3.1为什么需要集群EurekaServer?微服务RPC远程服务调用最核心的是高可用如果注册中心只有1个,如果出现故障,会导致整个服务环境不可用解决办法就是搭建Eureka注册中心集群,实现负载均衡和故障......
  • SpringCloud 多个服务启动放在一个窗口下的设置
    进入.idea文件夹,在workspace.xml文件中加入如下配置即可<componentname="RunDashboard"><optionname="configurationTypes"><set><optionvalue="SpringBootApplicationConfigurationType"/></set&......