zoukankan      html  css  js  c++  java
  • ribbon的理解

    什么是ribbon?

    Ribbo是一个基于HTTP和TCP的客户端负载均衡器
    

    什么是客户端负载均衡?

    客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置。
    在客户端负载均衡中,所有的客户端节点都有一份自己要访问的服务端清单,客户端在发起请求的时候会先自行选择一个服务端,向该服务端发起请求,从而实现负载均衡
    

    ribbon的职能主要有两个:

    1、维护所有的服务实例SeverList(新增、更新、删除等)
    2、当需要请求Server实例时,从SeverList中找到最合适的Server实例并返回
    

    维护server列表

    1、基于定时任务拉取服务列表方式,然后将最新的服务列表更新到ServerList之中(默认30s一次从Eureka服务端拉取)
    2、基于Eureka服务事件通知的方式,来更新ServerList(例如:有新服务注册,或有服务down机,会有事件通知)
    

    选择服务实例的流程

    1、通过ServerList获取当前可用的服务实例列表
    
    2、使用ServerListFilter过滤器过滤出符合要求的服务实例列表
    	(Ribbon默认采取了区域优先的过滤策略,即从ServerList中过滤出和当前实例所在的区域(zone)一致的serverList)
    
    3、应用Rule规则,结合服务实例的统计信息,返回满足规则的某一个服务实例
    	
    
    说明:在服务实例列表选择的过程中,有两次过滤的机会
            第一次是首先通过ServerListFilter过滤器
            另外一次是用过Rule的选择规则进行过滤
    

    rule规则

    1、RoundRobinRule	线性轮询
    2、RandomRule	随机
    3、WeightedResponseTimeRule	权重
    4、BestAvailableRule	选出最空闲的实例
    5、RetryRule	线性轮询重试
    6、ZoneAvoidanceRule	
    	计算出哪个区域的服务最差,将此zone的服务从服务列表中剔除
    	再过滤掉正处于熔断状态的服务
    	然后通过RoundRobinRule线性轮询的方式从列表中挑选一个服务
  • 相关阅读:
    JavaScript数字精度丢失问题总结
    前端开发调试线上代码的两款工具
    微信公众账号开发入门
    Chrome/Firefox 中头toFixed方法四舍五入兼容性问题
    GIT/node使用
    addEventListener 的另类写法
    JavaScript 动态插入 CSS
    JavaScript判断各浏览器CSS前缀的两种方式
    流程办理操作说明
    流程设计器(2)
  • 原文地址:https://www.cnblogs.com/jis121/p/11018015.html
Copyright © 2011-2022 走看看