交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
loadBalancer 第2 章:LoadBalancerClient
分享
未结
0
927
李延
LV6
2021-06-23
悬赏:20积分
# 作用 在Fegin代码分析中我们知道,请求的负载均衡就是通过LoadBalancerClient来实现的。 # 初始化 ```java @Bean @ConditionalOnBean(LoadBalancerClientFactory.class) @ConditionalOnMissingBean public LoadBalancerClient blockingLoadBalancerClient(LoadBalancerClientFactory loadBalancerClientFactory, LoadBalancerProperties properties) { return new BlockingLoadBalancerClient(loadBalancerClientFactory, properties); } ``` 我们看到这里需要一个LoadBalancerClientFactory对象,我们后面分析。 # 主要方法 public ServiceInstance choose(String serviceId) 在fegin代码中,我们就是通过这个方法通过服务名称获取到具体ip和端口,也就是说具体的负载均衡就是在这里实现的。 ```java @Override public <T> ServiceInstance choose(String serviceId, Request<T> request) { ReactiveLoadBalancer<ServiceInstance> loadBalancer = loadBalancerClientFactory.getInstance(serviceId); if (loadBalancer == null) { return null; } Response<ServiceInstance> loadBalancerResponse = Mono.from(loadBalancer.choose(request)).block(); if (loadBalancerResponse == null) { return null; } return loadBalancerResponse.getServer(); } ``` 这里我们看到首先是通过loadBalancerClientFactory 获取到了ReactiveLoadBalancer<ServiceInstance>对象,而具体的获取对应访问地址是通过它的choose方法。 # 总结 LoadBalancerClient方法没有具体的实现逻辑,而是通过loadBalancerClientFactory获取ReactiveLoadBalancer对象来实现的。这块我们在解析完成loadBalancerClientFactory后说明。
回帖
消灭零回复
提交回复
热议榜
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应用
微信扫码关注公众号