轮询
- RRLoadBalancer:轮询策略;
- 优点:简单
缺点:1.性能差的服务器和性能好的服务器被选中的几率一致 2.长链接的维持和命中率,相同的请求会被分配到不同的服务器中
随机策略
RandomLoadBalancer:随机策略;
- 优点:简单
- 缺点:1.性能差的服务器和性能好的服务器被选中的几率一致 2.长连接问题
加权轮询
- WeightLoadBalancer:加权轮询策略,按照权重轮流分配请求;
- 优点:对不同处理能力的服务器分配不同的权重,优化了集群性能
缺点:1.服务器的权重都是静态配置的,当服务器的性能发生变化时应变能力不足。一台高性能的服务器万一出现问题,由于其权重较大,瞬间就会有大量请求失效 2.长链接问题
一致哈希性
ConsistentHashLoadBalancer:一致性Hash策略
- 优点:1.将请求的url或者是ip进行hash分配服务器,相同请求的hash值相同会被分配到相同的服务器中,解决长连接问题 2.解决公平性,接收到对等的调用量 3.加减节点波动性小,只影响局部
- 缺点:
- 由于虚拟节点的存在,hash结果一般比较均匀。仅适用均匀负载的场景,但实际流量和负载不一定是均匀的
- 容灾问题。哈希环导致局部流量的倾斜,hsf解决:熔断策略。 对于一段时间内异常数达到一定比例的服务器,直接采取熔断措施停止其接收请求的能力并在一段时间后重试。
- 请求顺延给其他服务器可能会导致其他服务器qps超标,进而造成整个集群的雪崩。==> hsf解决:当宕机的服务器比例超过一定比例时,关闭熔断策略,流量均摊到所有服务器上,接收一定量的异常,这样就很好地防止了雪崩的问题。