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