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