一、简介
根据key从lb.allServers或lb.upServers中选择一个可用Server。
1、核心实现

二、设计要点
1、RandomRule

2、RoundRobinRule

3、BestAvailableRule
过滤熔断、高并发实例。
备注:组合使用
4、PredicateBasedRule
4.1、AbstractServerPredicate
4.1.1、简介
作为基础组件,为Rule和ServerList提供服务过滤能力。
4.1.2、核心实现

A、AvailabilityPredicate
B、ZoneAffinityPredicate
C、ZoneAvoidancePredicate
基于聚合指标,过滤掉最差Zone,得到所有可用的Zone。然后判断当前Zone是否在可用Zone之内。

D、CompositePredicate
4.2、AvailabilityFilteringRule
考虑到正常情况下,大部分实例都处于可用状态,因此10次内足够选出可用实例。
4.3、ZoneAvoidanceRule


