38.Ribbon
2024-09-08 19:23:49
Ribbon默认是懒加载,所以初次请求时间最长,后续请求会变快,可以通过修改为饥饿加载
ribbon.eager-load.enabled=true
ribbon.eager-load.clients=user-center
Ribbon策略的两种配置方式
- Java 配置Ribbon
package com.itmuch.contentcenter.configuration;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.context.annotation.Configuration;
import ribbonconfiguration.RibbonConfiguration;
/**
* 局部配置,只针对 user-center 起作用
* @Configuration
* @RibbonClient(name = "user-center", configuration = RibbonConfiguration.class)
*/
/**
* 全局配置,对所有ribbon起作用
* 如果需要用的话,UserCenterRibbonConfiguration类名修改一下会更语义化
* @Configuration
* @RibbonClients(defaultConfiguration = RibbonConfiguration.class)
*/
public class UserCenterRibbonConfiguration {
}
- application.properties
# ribbon配置策略 <clientName>.ribbon.NFLoadBalancerRuleClassName
user-center.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
自定义Nacos权重策略
/**
* Created by Guaguaerhao on 2022/4/27 2:36 下午
* 自定义Nacos权重策略
*/
@Slf4j
public class NacosWeightedRule extends AbstractLoadBalancerRule {
@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;
@Override
public void initWithNiwsConfig(IClientConfig clientConfig) {
//读取配置文件,并初始化NacosWeightedRule
}
@Override
public Server choose(Object key) {
try {
BaseLoadBalancer baseLoadBalancer = (BaseLoadBalancer) this.getLoadBalancer();
// log.info("lb = {}", baseLoadBalancer);
// 想要请求的微服务的名称
String name = baseLoadBalancer.getName();
//拿到服务发现的相关api
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
// nacos client 自动通过基于权重的负载均衡算法,给我们选择一个实例
Instance instance = namingService.selectOneHealthyInstance(name);
log.info("port = {}, instance = {}", instance.getPort(), instance);
return new NacosServer(instance);
} catch (NacosException e) {
e.printStackTrace();
}
return null;
}
}
最新文章
- 在android用Get方式发送http请求
- DNS基础及域名系统架构
- PL/SQL之--存储过程
- JAVA遍历一个文件夹中的所有文件
- CreateThread函数&;amp;&;amp;CString::GetBuffer函数
- CodeForces 707C Pythagorean Triples (数论)
- Linux 命令 - history: 显示或操作历史列表
- Sql Server关于text类型的替换
- 数据结构笔记01:编程面试过程中常见的10大算法(java)
- ping网络故障
- JSP打印九九乘法表
- linux c in common use function reference manual
- Oracle SQL篇(三)Oracle ROWNUM 与TOP N分析
- C语言指针强制转化的应用
- 半透明边框与background-clip
- hdu 2046递推
- Why ngx-uploader doesn&#39;t like to cooperate with .net core 2.x?
- 后台文本编辑器KindEditor介绍
- Java并发编程笔记之ConcurrentLinkedQueue源码探究
- SQL中on条件与where条件的区别