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 文件如下:

  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/jacksonxiao/p/8379750.html
Copyright © 2011-2022 走看看