Ribbon 负载均衡策略与自定义规则

负载均衡是微服务远程调用里绕不开的问题。注册中心告诉你"有哪些服务实例",但真正每次调用哪个实例,需要负载均衡组件来决定。

一句话概括:Ribbon 是客户端负载均衡组件,Feign 发起远程调用时,底层可以通过 Ribbon 从注册中心拉到的实例列表中选择一个服务实例。


#mermaid-svg-EeExnBgBycbFvZM4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EeExnBgBycbFvZM4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EeExnBgBycbFvZM4 .error-icon{fill:#552222;}#mermaid-svg-EeExnBgBycbFvZM4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EeExnBgBycbFvZM4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EeExnBgBycbFvZM4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EeExnBgBycbFvZM4 .marker.cross{stroke:#333333;}#mermaid-svg-EeExnBgBycbFvZM4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EeExnBgBycbFvZM4 p{margin:0;}#mermaid-svg-EeExnBgBycbFvZM4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EeExnBgBycbFvZM4 .cluster-label text{fill:#333;}#mermaid-svg-EeExnBgBycbFvZM4 .cluster-label span{color:#333;}#mermaid-svg-EeExnBgBycbFvZM4 .cluster-label span p{background-color:transparent;}#mermaid-svg-EeExnBgBycbFvZM4 .label text,#mermaid-svg-EeExnBgBycbFvZM4 span{fill:#333;color:#333;}#mermaid-svg-EeExnBgBycbFvZM4 .node rect,#mermaid-svg-EeExnBgBycbFvZM4 .node circle,#mermaid-svg-EeExnBgBycbFvZM4 .node ellipse,#mermaid-svg-EeExnBgBycbFvZM4 .node polygon,#mermaid-svg-EeExnBgBycbFvZM4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EeExnBgBycbFvZM4 .rough-node .label text,#mermaid-svg-EeExnBgBycbFvZM4 .node .label text,#mermaid-svg-EeExnBgBycbFvZM4 .image-shape .label,#mermaid-svg-EeExnBgBycbFvZM4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-EeExnBgBycbFvZM4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-EeExnBgBycbFvZM4 .rough-node .label,#mermaid-svg-EeExnBgBycbFvZM4 .node .label,#mermaid-svg-EeExnBgBycbFvZM4 .image-shape .label,#mermaid-svg-EeExnBgBycbFvZM4 .icon-shape .label{text-align:center;}#mermaid-svg-EeExnBgBycbFvZM4 .node.clickable{cursor:pointer;}#mermaid-svg-EeExnBgBycbFvZM4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-EeExnBgBycbFvZM4 .arrowheadPath{fill:#333333;}#mermaid-svg-EeExnBgBycbFvZM4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EeExnBgBycbFvZM4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EeExnBgBycbFvZM4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EeExnBgBycbFvZM4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-EeExnBgBycbFvZM4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EeExnBgBycbFvZM4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-EeExnBgBycbFvZM4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EeExnBgBycbFvZM4 .cluster text{fill:#333;}#mermaid-svg-EeExnBgBycbFvZM4 .cluster span{color:#333;}#mermaid-svg-EeExnBgBycbFvZM4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EeExnBgBycbFvZM4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-EeExnBgBycbFvZM4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-EeExnBgBycbFvZM4 .icon-shape,#mermaid-svg-EeExnBgBycbFvZM4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EeExnBgBycbFvZM4 .icon-shape p,#mermaid-svg-EeExnBgBycbFvZM4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-EeExnBgBycbFvZM4 .icon-shape .label rect,#mermaid-svg-EeExnBgBycbFvZM4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EeExnBgBycbFvZM4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-EeExnBgBycbFvZM4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-EeExnBgBycbFvZM4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} order-service

发起远程调用
Feign 生成代理请求
Ribbon 获取服务名
向注册中心拉取

userservice 实例列表
本地缓存实例列表
根据负载均衡规则

选择一个实例
拼接真实 IP 和端口
发起 HTTP 调用

Ribbon 是服务端负载均衡还是客户端负载均衡

Ribbon 是客户端负载均衡。

这句话的意思是:不是由一个独立的负载均衡服务器统一转发请求,而是调用方自己拿到服务列表,然后在本地选择一个实例。

类型 选择实例的位置 例子
服务端负载均衡 请求先到负载均衡器,由负载均衡器转发 Nginx、SLB
客户端负载均衡 调用方本地拿实例列表并选择实例 Ribbon

微服务内部调用通常更适合客户端负载均衡,因为消费者本身就能通过注册中心拿到服务列表。
#mermaid-svg-NXHa1fuD8YnKJbLb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NXHa1fuD8YnKJbLb .error-icon{fill:#552222;}#mermaid-svg-NXHa1fuD8YnKJbLb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NXHa1fuD8YnKJbLb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NXHa1fuD8YnKJbLb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NXHa1fuD8YnKJbLb .marker.cross{stroke:#333333;}#mermaid-svg-NXHa1fuD8YnKJbLb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NXHa1fuD8YnKJbLb p{margin:0;}#mermaid-svg-NXHa1fuD8YnKJbLb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster-label text{fill:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster-label span{color:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster-label span p{background-color:transparent;}#mermaid-svg-NXHa1fuD8YnKJbLb .label text,#mermaid-svg-NXHa1fuD8YnKJbLb span{fill:#333;color:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb .node rect,#mermaid-svg-NXHa1fuD8YnKJbLb .node circle,#mermaid-svg-NXHa1fuD8YnKJbLb .node ellipse,#mermaid-svg-NXHa1fuD8YnKJbLb .node polygon,#mermaid-svg-NXHa1fuD8YnKJbLb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NXHa1fuD8YnKJbLb .rough-node .label text,#mermaid-svg-NXHa1fuD8YnKJbLb .node .label text,#mermaid-svg-NXHa1fuD8YnKJbLb .image-shape .label,#mermaid-svg-NXHa1fuD8YnKJbLb .icon-shape .label{text-anchor:middle;}#mermaid-svg-NXHa1fuD8YnKJbLb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NXHa1fuD8YnKJbLb .rough-node .label,#mermaid-svg-NXHa1fuD8YnKJbLb .node .label,#mermaid-svg-NXHa1fuD8YnKJbLb .image-shape .label,#mermaid-svg-NXHa1fuD8YnKJbLb .icon-shape .label{text-align:center;}#mermaid-svg-NXHa1fuD8YnKJbLb .node.clickable{cursor:pointer;}#mermaid-svg-NXHa1fuD8YnKJbLb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NXHa1fuD8YnKJbLb .arrowheadPath{fill:#333333;}#mermaid-svg-NXHa1fuD8YnKJbLb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NXHa1fuD8YnKJbLb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NXHa1fuD8YnKJbLb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NXHa1fuD8YnKJbLb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NXHa1fuD8YnKJbLb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NXHa1fuD8YnKJbLb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster text{fill:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb .cluster span{color:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NXHa1fuD8YnKJbLb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NXHa1fuD8YnKJbLb rect.text{fill:none;stroke-width:0;}#mermaid-svg-NXHa1fuD8YnKJbLb .icon-shape,#mermaid-svg-NXHa1fuD8YnKJbLb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NXHa1fuD8YnKJbLb .icon-shape p,#mermaid-svg-NXHa1fuD8YnKJbLb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NXHa1fuD8YnKJbLb .icon-shape .label rect,#mermaid-svg-NXHa1fuD8YnKJbLb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NXHa1fuD8YnKJbLb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NXHa1fuD8YnKJbLb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NXHa1fuD8YnKJbLb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 服务端负载均衡
请求先到 Nginx / SLB
负载均衡器选择后端实例
转发请求
客户端负载均衡
消费者从注册中心拿实例列表
消费者本地选择实例
直接调用目标服务

两者的区别不在"有没有负载均衡",而在谁负责选择实例。服务端负载均衡由中间层选择;客户端负载均衡由调用方自己选择。

Ribbon 常见负载均衡策略

Ribbon 提供了不少规则,面试里不用每个都展开,但常见的要能说出差异。

策略 含义
RoundRobinRule 轮询选择服务实例
RandomRule 随机选择一个可用实例
WeightedResponseTimeRule 根据响应时间计算权重,响应越慢权重越低
BestAvailableRule 忽略短路实例,选择并发数较低的实例
RetryRule 在指定时间内重试选择可用实例
AvailabilityFilteringRule 过滤不健康实例,再选择连接数较小的实例
ZoneAvoidanceRule 默认策略,综合区域可用性和实例可用性选择

项目里最常提的是轮询、随机、响应时间权重、区域敏感策略。

自定义负载均衡怎么做

常见有两种方式:全局配置和局部配置。
#mermaid-svg-0750uDFS9mMYexD7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0750uDFS9mMYexD7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0750uDFS9mMYexD7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0750uDFS9mMYexD7 .error-icon{fill:#552222;}#mermaid-svg-0750uDFS9mMYexD7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0750uDFS9mMYexD7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0750uDFS9mMYexD7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0750uDFS9mMYexD7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0750uDFS9mMYexD7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0750uDFS9mMYexD7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0750uDFS9mMYexD7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0750uDFS9mMYexD7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0750uDFS9mMYexD7 .marker.cross{stroke:#333333;}#mermaid-svg-0750uDFS9mMYexD7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0750uDFS9mMYexD7 p{margin:0;}#mermaid-svg-0750uDFS9mMYexD7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0750uDFS9mMYexD7 .cluster-label text{fill:#333;}#mermaid-svg-0750uDFS9mMYexD7 .cluster-label span{color:#333;}#mermaid-svg-0750uDFS9mMYexD7 .cluster-label span p{background-color:transparent;}#mermaid-svg-0750uDFS9mMYexD7 .label text,#mermaid-svg-0750uDFS9mMYexD7 span{fill:#333;color:#333;}#mermaid-svg-0750uDFS9mMYexD7 .node rect,#mermaid-svg-0750uDFS9mMYexD7 .node circle,#mermaid-svg-0750uDFS9mMYexD7 .node ellipse,#mermaid-svg-0750uDFS9mMYexD7 .node polygon,#mermaid-svg-0750uDFS9mMYexD7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0750uDFS9mMYexD7 .rough-node .label text,#mermaid-svg-0750uDFS9mMYexD7 .node .label text,#mermaid-svg-0750uDFS9mMYexD7 .image-shape .label,#mermaid-svg-0750uDFS9mMYexD7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-0750uDFS9mMYexD7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0750uDFS9mMYexD7 .rough-node .label,#mermaid-svg-0750uDFS9mMYexD7 .node .label,#mermaid-svg-0750uDFS9mMYexD7 .image-shape .label,#mermaid-svg-0750uDFS9mMYexD7 .icon-shape .label{text-align:center;}#mermaid-svg-0750uDFS9mMYexD7 .node.clickable{cursor:pointer;}#mermaid-svg-0750uDFS9mMYexD7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0750uDFS9mMYexD7 .arrowheadPath{fill:#333333;}#mermaid-svg-0750uDFS9mMYexD7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0750uDFS9mMYexD7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0750uDFS9mMYexD7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0750uDFS9mMYexD7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0750uDFS9mMYexD7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0750uDFS9mMYexD7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0750uDFS9mMYexD7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0750uDFS9mMYexD7 .cluster text{fill:#333;}#mermaid-svg-0750uDFS9mMYexD7 .cluster span{color:#333;}#mermaid-svg-0750uDFS9mMYexD7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0750uDFS9mMYexD7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0750uDFS9mMYexD7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-0750uDFS9mMYexD7 .icon-shape,#mermaid-svg-0750uDFS9mMYexD7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0750uDFS9mMYexD7 .icon-shape p,#mermaid-svg-0750uDFS9mMYexD7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0750uDFS9mMYexD7 .icon-shape .label rect,#mermaid-svg-0750uDFS9mMYexD7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0750uDFS9mMYexD7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0750uDFS9mMYexD7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0750uDFS9mMYexD7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 自定义负载均衡策略
全局生效
局部生效
定义 IRule 类型 Bean
所有服务调用使用该规则
在配置文件中指定

某个服务的规则类
只影响指定服务调用

方式一:定义 IRule Bean

java 复制代码
@Bean
public IRule randomRule() {
    return new RandomRule();
}

这种方式通常是全局生效,要小心影响范围。

方式二:配置某个服务的规则

yaml 复制代码
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

这种方式是局部生效,只影响调用 userservice 时的负载均衡策略。

面试回答模板

可以这样答:

我们项目里的服务调用使用 Feign,Feign 底层会结合 Ribbon 做客户端负载均衡。消费者先从注册中心拉取服务实例列表,比如 user-service 有多个实例,Ribbon 会根据负载均衡策略选择一个实例发起调用。常见策略有轮询、随机、按响应时间权重、区域敏感策略等。自定义策略可以实现 IRule 接口并配置成 Bean,也可以在配置文件里针对某一个服务单独指定规则。

小结

Ribbon 的重点不在"背策略名",而在理解调用链:

Feign 发起调用 -> Ribbon 获取服务列表 -> 负载均衡规则选实例 -> 拼真实地址 -> 发送请求。

把这条线讲清楚,策略名只是补充。

相关推荐
Token炼金师1 天前
服务的骨架:网关、负载均衡、容灾、弹性与多机房 —— 推理系统架构五柱
人工智能·系统架构·llm·负载均衡·容灾·kv cache·prefix cache
微三云 - 廖会灵 (私域系统开发)2 天前
电商系统微服务拆分实战:从单体到Spring Cloud的分布式事务踩坑与补偿方案
分布式·spring cloud·微服务
k↑2 天前
SpringCloud + React19 集成Scalar的API文档
后端·spring·spring cloud
章老师说2 天前
NGINX官方谈Lua风险:这其实是两条网关技术路线之争
运维·nginx·负载均衡·lua·openresty
LiaoWL1232 天前
【SpringCloud合集-02】Spring Cloud LoadBalancer 负载均衡器学习笔记
学习·spring cloud·负载均衡
姚不倒3 天前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5
oscar9993 天前
3.4 Nginx 负载均衡——动态再平衡的反人性纪律
nginx·github·负载均衡·财富源代码
姚不倒3 天前
F5 健康检查 Monitor 深入篇
运维·负载均衡·f5
9i编程4 天前
5.Nacos 配置中心化改造与短信 Debug 模式动态切换实践
后端·spring cloud
我是一颗柠檬5 天前
【Java项目技术亮点】加权轮询负载均衡算法
java·算法·负载均衡