首页 > 其他分享 >Ribbon

Ribbon

时间:2023-07-26 12:44:20浏览次数:33  
标签:负载 实例 均衡 服务器 Ribbon 客户端

Ribbon

1.什么是ribbon?

目前主流的负载均衡方案有两种:

  1.集中式的负载均衡,在消费端和服务方中间使用独立的代理方式进行负载,有硬件的,也有软件的。

  2.客户端根据自己的请求情况做负载均衡,Ribbon就属于客户端自己做负载均衡

spring cloud Ribbon 是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供了一系列的完善的配置,比如超时,重试等。通过LoadBalance获取到服务提供的机器实例,Ribbon会自动基于某种规则去调用这些服务。也可以自己实现负载均衡算法

 

2.客户端的负载均衡

  客户端会有一个服务器的地址列表,在发送请求的时候通过负载均衡算法选择一个服务器,然后进行访问,这是客户端的负载均衡,即在客户端进行负载均衡算法

 

3.服务端的负载均衡

  例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问,即在服务器端再进行负载均衡算法分配

 

4.常见的负载均衡算法

  1.随机,通过随机选择服务器进行

  2.轮询,负载均衡默认实现方式,请求来之后排队处理

  3.加权轮询,通过对服务器性能的分型,给高配置的服务器分配更高的权重,均衡各个服务器的压力

  4.地址Hash,通过客户端的请求地址的Hash值取模映射进行服务器调度,ip hash

  5.最小链接数,即请求均衡了,但是压力不一定会均衡,最小链接数就是根据服务器的情况,比如请求积压等参数,将请求分配到当前压力最小的服务器上,最小活跃数

 

5.Ribbon的负载均衡算法有哪些

  1.RandomRule:随机策略,随机选择一个服务实例。

  2.RoundRobinRule:线性轮询负载均衡策略。

  3.RetryRule:在轮询的基础上加上重试机制。如果选取到的实例正常就返回,如果选择实例失效或为null,就在失效时间之前进行不断重试,如果超过超时时间还没获取到就会返回null。

  4.WeightedResponseTimeRule:会根据每个服务实例的运行情况给该实例计算一个权重,然后再挑选时根据权重去挑选,实现更优化的实例调用。默认每隔30s计算一次权重,权重的计算规则大概意思是,如果一个服务的平均响应时间越短则权重越大,则挑选该实例的比值也越大

  5.BestAvailableRule:先过滤掉失效的服务实例,在选择并发量较小的实例

  6.ZoneAvoidanceRule:这是Ribbon的默认规则,复合判断server所在区域的性能和server的可用性选择服务器

 

6.修改Ribbon的负载均衡算法

  方式1:自定义一个配置类,定义一个方法,加上@Bean 注解,返回IRule

  方式2:通过配置文件的方式:

  在配置文件中配置:stock-service: ##服务名

             ribbon:

              NFLoadBalancerRuleClassName:com.alibaba.cloud.nacos.ribbon.NacosRule  ##nacos默认实现的Ribbon负载均衡策略

 

7.自定义Ribbon的负载均衡策略

  继承AbstractLoadBalanceRule抽象类

 

标签:负载,实例,均衡,服务器,Ribbon,客户端
From: https://www.cnblogs.com/yangyanga/p/17214830.html

相关文章

  • 1分布式微服务技术栈-SpringCloud<Eureka,Ribbon,nacos>
    微服务技术栈一、微服务介绍了解1架构结构案例与springboot兼容关系拆分案例拆分服务拆分-服务远程调用2eureka注册中心Eureka-提供者与消费者Eureka-eureka原理分析Eureka-搭建eureka服务Eureka-服务注册Eureka-服务发现3Ribbon组件负载均衡Ribbon-负载均衡原理Ribbon-负载......
  • Ribbon与Nginx的区别
    一、Ribbon与Nginx的区别我们知道负载均衡有硬件负载均衡与软件的负载均衡方案硬件负载均衡:比如F5、深信服、Array等;软件负载均衡:比如Nginx、LVS、HAProxy等;硬件负载均衡或是软件负载均衡,他们都会维护一个可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单......
  • arcgis pro自定义ribbon
     参考:https://pro.arcgis.com/en/pro-app/2.9/get-started/customize-the-ribbon.htm......
  • springcloud - ribbon简单提点 + 手写轮询算法
    ribbon(依然有人使用,还是很难替换掉)负载均衡+restTemplate实现rpc远程调用新版eureka依赖集成好了ribbon,可以不用重新导入consumer远程调用provider使用到了一个resttemplate类在消费者端的consumer中调用   @Resource   privateRestTemplaterestTemplate;/......
  • Ribbon-饥饿加载
    Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。 【LoadBalanceClient定义了从可用服务列表中选择一个具体的服务实例进行访问的逻辑】而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:ribbon:eager-load......
  • Ribbon负载均衡
    负载均衡流程 IRule决定负载均衡策略 默认ZoneAvoidanceRule。调整负载均衡规则通过定义IRule实现可以修改负载均衡规则,有两种方式:1、代码方式:【全局作用在orderservice无论调用哪一个服务都是用该种负载均衡方式】在order-service中的OrderApplication类中,定义一个新的I......
  • 【SpringCloud】Ribbon
    Ribbon负载均衡原理order-service发起user-service请求,被ribbon进行拦截;ribbon会向注册中心拉取user-service相对应的服务;注册中心返回user-service服务列表;由ribbon的负载均衡机制去选择一个服务进行访问;默认采用的是轮训的机制。负载均衡流程请求示例配置......
  • Ribbon使用实践
    Ribbon是Netflix开源的一个负载均衡客户端库,用于在微服务架构中实现客户端的负载均衡。它可以与服务发现组件(例如Eureka)集成,自动地根据可用的服务实例来分发请求。下面是使用Java代码实现Ribbon入门示例的详细步骤:添加依赖项:在您的Java项目中,添加以下依赖项以使用Ribbon客户......
  • Spring cloud 微服务架构之Ribbon/Fegin连接超时ReadTimeout问题
    问题描述:近期用Springcloud开发微服务架构时候,在服务与服务之间调用调试代码时候,出现链接超时。错误信息:ReadtimedoutexecutingGEThttp://service-batch/batchmanagement/datatransfer/querybyplanid?planid=PL00000102。发生原因:用IDE开发Debug模式调试代码时候,在处理该服......
  • java——微服务——spring cloud——Eureka——ribbon负载均衡——策略
                        ========================================================         全局设置:                         针对某个微服务单独设置:......