zoukankan      html  css  js  c++  java
  • 【微服务架构】SpringCloud之Ribbon

        一:Ribbon是什么?

    Ribbon是Netfix发布的开源项目,主要负责客户端的软件负载均衡算法,将Netfix的中间层连接在一起,Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说。就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器、我们也很容易使用Riben实现自定义负载均衡算法;

      二:LB方案分类

    目前主流的LB方案可以分成两类,一类是集中式LB,即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx)由该设施负责,把访问请求通过某种策略转发至服务器的提供方。另一种是进程类的LB,将LB逻辑集成到消费方。消费方从服务器注册中心获取哪些地址是有用的,然后从这些地址中选择出一个合适的服务器。Ribbn就是后者,它只是一个类库,消费者通过它来获取到服务器提供方地址。

     三:Ribbon的主要组件与工作流程

    Ribbon的核心组件(均为接口类型)有以下几个:

    ServerList 用于获取地址列表,它既可以是静态的(提供一组固定的地址)也可以是动态的(从注册中心定期查询地址列表)

    ServerListFilter 仅当使用ServerList时使用。用于原始的服务列表中使用一定策略过滤到一部分地址。

    IRule 选择一个最终的服务地址作为LB结果,选择策略有轮询,根据响应时间加权。短路器,等,

    Ribbon在工作时首选会通过ServerList来获取所有可用的服务列表,然后通过ServerListFilte过滤掉一部分地址,最后在剩下的地址中通过IRule选择出一台服务器作为最终的结果。

    四:Ribbon提供的主要负载均衡策略介绍

    1.简单的轮询负载均衡。

    以轮询的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。

    2:随机负载均衡 (Random)

    随机选择状态为UP的Server

    3加权负载均衡

    根据相应时间分配一个Weight,响应时间越长,weight越小,被选中的可能性越低。

    4,区域感知轮询的负载均衡(ZoneAvoidanceRule)

    复合判断server所在区域的性能和server的可用性选择server

     Ribbon自带负载均衡策略比较

    五:Ribbon单独使用

      建一个服务消费者

    重新建立一个springboot工程,取名为:service-ribbon; 

    它的pom.xml 文件如下:

  • 相关阅读:
    Enterprise Library 企业库 V4.1
    跨域实现IFRAME自适应高度
    微软企业库4.1学习笔记(二)各功能之间的依赖关系以及对象创建
    微软企业库4.1学习笔记(三)企业库迁移和并行使用,以及企业库的扩展
    微软企业库4.1学习笔记(五)对象创建和依赖注入方法
    判断 iframe 是否加载完成的完美方法
    对JavaScript调用堆栈和setTimeout用法的深入研究
    工作流技术杂谈
    企业流程管理平台V2.0介绍(.NET平台下的工作流)
    c#操作oracle lob字段[转自 芽芽的回收站]
  • 原文地址:https://www.cnblogs.com/jacksonxiao/p/8379750.html
Copyright © 2011-2022 走看看