交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
loadBalancer 第4 章:ServiceInstanceListSupplier
分享
未结
0
1748
李延
LV6
2021-06-23
悬赏:20积分
# 作用 在ReactorServiceInstanceLoadBalancer中我们知道,它就是通过ServiceInstanceListSupplier对象获取到当前请求所有符合要求的实例,再进行筛选实现负载均衡的。 # 加载 ServiceInstanceListSupplier是通过loadBalancerClientFactory加载。 同样我们在LoadBalancerClientConfiguration类中找到加载过程。 ```java @Bean @ConditionalOnBean(ReactiveDiscoveryClient.class) @ConditionalOnMissingBean @ConditionalOnProperty(value = "spring.cloud.loadbalancer.configurations", havingValue = "default", matchIfMissing = true) public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier( ConfigurableApplicationContext context) { return ServiceInstanceListSupplier.builder().withDiscoveryClient().withCaching().build(context); } ``` 这里有多个,我们只挑选了默认加载的那个。 # 主要方法withBlockingDiscoveryClient ```java public ServiceInstanceListSupplierBuilder withBlockingDiscoveryClient() { if (baseCreator != null && LOG.isWarnEnabled()) { LOG.warn("Overriding a previously set baseCreator with a blocking DiscoveryClient baseCreator."); } this.baseCreator = context -> { DiscoveryClient discoveryClient = context.getBean(DiscoveryClient.class); return new DiscoveryClientServiceInstanceListSupplier(discoveryClient, context.getEnvironment()); }; return this; } ``` 这里我们看到通过上下文加载DiscoveryClient对象的过程。而DiscoveryClient对象就是提供每个serviceId实例的对象。 这个对象在nacos也可以找到它的实现:NacosDiscoveryClient
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号