Ribbon
2024-07-20 18:34:02 0 举报
AI智能生成
Ribbon是一种轻量级的负载均衡器,提供了应用程序负载平衡,流量整形,智能服务发现,速率限制,断路器,服务降级等功能。它基于Netflix云平台的实践经验,是一个开源的模块化框架,可以使用Java,Spring Boot和Spring Cloud等技术实现。Ribbon可以帮助你构建高可用性,可伸缩的微服务系统。
作者其他创作
大纲/内容
原生API
代码
工作原理
ILoadBalancer<br>
IRule
负载均衡的规则,选择一个服务器
自定义
策略
RoundRobinRule
系统内置的默认负载均衡规范,直接round robin轮询
AvailabilityFilteringRule
会考察服务器的可用性
WeightedResponseTimeRule
带着权重的,每个服务器可以有权重,权重越高优先访问
ZoneAvoidanceRule
根据区域和服气来进行负载均衡
BestAvailableRule
忽略那些连接失败的服务器,然后尽量找并发比较低的服务器来请求
RandomRule
随机找一个服务器
RetryRule
可以重试,就是通过round robin找到的服务器请求失败,可以重新找一个服务器
IPing
负责定时ping每个服务器,判断其是否存活
实现
与spring clound结合
工作原理
使用代码
启动初始化
关键源码
匠创建的每个RestTemplate,进行定制化,给每个RestTemplate设置了interceptor<br>
RestTemplateCustomizer的实现
依赖关系
LoadBalancerAutoConfiguration 依赖 LoadBalancerClient
LoadBalancerClient 依赖 RibbonAutoConfiguration
请求的拦截
流程图
拦截器的初始化
拦截器的路由
LoadBalancerClient 初始化的位置<br>
拦截后的路由策略
流程图
一个服务(比如说ServiceA) => 对应着一个独立的ApplicationContex=>ILoadBalancer
源码
如何根据负载均衡选择服务器
流程图
与eureka整合
第一次从eureka获取服务器注册列表
流程图
源码
后续从eureka获取服务器注册列表
流程图
定时刷新Ribbon 记录的注册表信息
源码
ServerListUpdater 初始化
ServerListUpdater 核心代码
IPing组件
spring cloud默认不生效
server是否存活。是使用eureka去处理的
0 条评论
下一页