负载均衡可以选择不同的实例来处理请求,那么具体怎么选呢? 如何决定此次请求应该使用哪个实例呢?
这就涉及到了负载均衡的策略。 多刷新几次上面的请求,你会发现 8083、8081 这两个实例是交替处理的,这是因为 Eureka 默认使用的是轮询策略,就是所有实例挨个选择一遍,周而复始。
但实际上是有很多种负载均衡策略的,如下:
(1)随机策略 RandomRule
就像是抽签,闭眼睛随便抓一个。
(2)轮询策略 RoundRobinRule
按顺序循环选择每个实例。
(3)重试策略 RetryRule
在轮询策略的基础上增加了重试机制,如果当前选择的实例不可用,就继续按照轮询策略选择下一个实例,直到找到可用的实例。
但注意重试是有时间限制的,不能不停的重试。
(4)最低并发策略 BestAvailableRule
选择并发最小的那个实例,也就是看谁清闲就找谁,哈哈。
(5)可用过滤策略 AvailabilityFilteringRule
过滤掉那些故障率高、压力大的实例。
(6)加权轮询策略 WeightedResponseTimeRule
加权就是为每个实例打个分,处理性能好的分值就越高,然后按照分值从高到低的顺序来轮询。
(7)区域权衡策略 ZoneAvoidanceRule
在大型系统中,可能会在多个区域进行部署,那么就可以根据各个区域的服务处理能力来选择实例。
原文链接:
https://ke.boxuegu.com/barrier.html#/mutual?courseId=3243&barrierId=2192&chapterId=588