rabbion相关类(LoadBalancerStats、ServerListUpdater)介绍:

本文介绍了Ribbon组件中的LoadBalancerStats类,用于负载均衡数据记录,包括Server状态、动态配置和统计数据缓存。同时,详细解析了ServerListUpdater接口,它是服务实例列表更新机制的核心,负责调度服务实例的更新操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 负载均衡数据记录LoadBalancerStats

public class LoadBalancerStats {

    String name;

    //zone相关信息,默认用不到

    volatile Map<String, ZoneStats> zoneStatsMap = new ConcurrentHashMap<String, ZoneStats>();

    volatile Map<String, List<? extends Server>> upServerListZoneMap = new ConcurrentHashMap<String, List<? extends Server>>();

 

    //动态配置,连接失败上限

    private volatile DynamicIntProperty connectionFailureThreshold;

    //动态配置,熔断时间因子

    private volatile DynamicIntProperty circuitTrippedTimeoutFactor;

    //动态配置,最大熔断时间

    private volatile DynamicIntProperty maxCircuitTrippedTimeout;

    //动态配置,每个Server负载均衡统计数据过期时间配置

    private static final DynamicIntProperty SERVERSTATS_EXPIRE_MINUTES =

        DynamicPropertyFactory.getInstance().getIntProperty("niws.loadbalancer.serverStats.expire.minutes", 30);

 

    //每个Server的负载均衡统计数据

    private final LoadingCache<Server, ServerStats> serverStatsCache =

        CacheBuilder.newBuilder()

            .expireAfterAccess(SERVERSTATS_EXPIRE_MINUTES.get(), TimeUnit.MINUTES)

            .removalListener(new RemovalListener<Server, ServerStats>() {

                @Override

                public void onRemoval(RemovalNotification<Server, ServerStats> notification) {

                    notification.getValue().close();

                }

            })

            .build(

                new CacheLoader<Server, ServerStats>() {

                    public ServerStats load(Server server) {

                        return createServerStats(server);

                    }

                });

}

 

服务实例列表更新机制实现的接口ServerListUpdater

public interface ServerListUpdater {

 

    //定义了更新服务实例列表的操作doUpdate

    public interface UpdateAction {

        void doUpdate();

    }

 

    //开始调度更新服务实例列表,可以看到这里以UpdateAction为传参

    void start(UpdateAction updateAction);

 

    //停止更新服务实例列表

    void stop();

 

    //上次服务实例列表更新时间

    String getLastUpdate();

 

    //上次服务实例列表更新时间间隔

    long getDurationSinceLastUpdateMs();

 

    //已经错过几轮更新

    int getNumberMissedCycles();

 

    //使用线程池大小

    int getCoreThreads();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值