Ribbon默认是懒加载,所以初次请求时间最长,后续请求会变快,可以通过修改为饥饿加载

ribbon.eager-load.enabled=true
ribbon.eager-load.clients=user-center

Ribbon策略的两种配置方式

  1. 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 {
}
  1. 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;
}
}

38.Ribbon的更多相关文章

  1. Dynamics CRM 2015-Form之添加Ribbon Button

    说到在CRM Form上添加Ribbon Button,那就不得不提到一个Tool:Ribbon Workbench,使用这个Tool,能为我们添加button带来不少便利. Ribbon Workb ...

  2. 从零开始学spring cloud(六) -------- Ribbon

    一.Ribbon介绍 Ribbon就是客户端侧负责均衡实现的一种方式,那么Ribbon是什么呢? Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法.Ribb ...

  3. Ribbon对于SocketTimeOutException重试的坑以及重试代码解析

    背景 本文基于Spring-Cloud, Daltson SR4 微服务一般多实例部署,在发布的时候,我们要做到无感知发布:微服务调用总会通过Ribbon,同时里面会实现一些重试的机制,相关配置是: ...

  4. SpringCloud | FeignClient和Ribbon重试机制区别与联系

    在spring cloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试. 今天就来分别分析一下 FeignClient 和 Ribbon 重试机制 ...

  5. SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习

    作者:个人微信公众号:程序猿的月光宝盒 环境:win10--idea2019--jdk8 1.搭建Eureka服务模块 1.1 新建eureka服务模块(Sping Initializr) 取名为eu ...

  6. SpringCloud的入门学习之概念理解、Ribbon负载均衡入门

    1.Ribbon负载均衡,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端.负载均衡的工具. 答:简单的说,Ribbon是Netflix发布的开源项目,主要功能 ...

  7. springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig

    原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服务实战:Eureka+Zuul+Ribbon+Hyst ...

  8. 微服务:Eureka+Zuul+Ribbon+Feign+Hystrix构建微服务架构

    原文地址:http://blog.csdn.net/qq_18675693/article/details/53282031 本案例将打架一个微服务框架,参考来源官方参考文档 微服务:是什么?网上有一 ...

  9. SpringCloud2.0 Hystrix Ribbon 基于Ribbon实现断路器

    原文:https://www.cnblogs.com/songlu/p/9949203.html 1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 Sprin ...

  10. eureka中显示有服务但是通过ribbon调用显示No instances available for service-hello的问题

    一,问题 采取eureka集群.客户端通过Ribbon调用服务,Ribbon端报下列异常 ? 1 2 3 4 5 6 7 java.net.UnknownHostException: SERVICE- ...

随机推荐

  1. 主页面调取iframe子页面的子页面数据

    iframe = this.iframe.contentWindow; var rowsData = iframe.$("#sonList2")[0].contentWindow. ...

  2. Web开发的常用攻击和防御方式

    一.XSS 主要利用:1.盲目相信用户提交的内容 2.直接把用户的字符串转化成DOM 分类: 1.存储型XSS,恶意脚本存在数据库中,所有访问页面的用户都会被攻击 2.反射型XSS,脚本写在URL中, ...

  3. [OC] Block 是什么

    Block 是 带有自动变量的匿名函数.  emmmm 反正我看了也不懂,我们一点点用具体的例子分析一下block. 1. 我们现在要在一个文件中使用block(我们后面再提到两个界面传值的block ...

  4. java中的Filter(过滤器)和Intercepter(拦截器)的认知

    一.过滤器的配置 首先,从认知方面看,如果自己真的对Filter和Intercepter 不熟悉或者忘记的话可以自己在IDEA中编写Demo进行查看两个的区别,这也是自己动手去认知的过程.首先从Fil ...

  5. windows 链接 MySQL8.0.28 报错: SSL connection error: unknown error number 解决办法

    找到 My.ini文件,以管理员身份打开并在  [mysqld]   节点下 增加   skip_ssl   选项并保存,重启 MySQL 服务 执行SQL语句    SHOW VARIABLES L ...

  6. Win10 U盘不自动显示

    Win+R,在窗口中输入 命令services.msc,然后点击确定按钮:这时就会打开Windows10的服务列表,在列表中找到Plug and Play服务项.双击后看一下该服务是否启动,先停止,然 ...

  7. SpringBoot + Quartz 集成

    Quartz 应用启动加载集群配置 @Bean 注解交由 Spring BeanFactory 容器管理 @Bean public JobDetailFactoryBean testJobDetail ...

  8. 为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请

    目录 为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请 git内容大回顾 今日内容概要 今日内容详细 1 为开源项目贡献代码 2 p ...

  9. JSR 133

      JSR 133是Java语言规范的一个JSR(Java Specification Request),全称为Java Memory Model and Thread Specification R ...

  10. Ubuntu之docker搭建dvwa

    前提,已经安装好docker. 首先,搜索DVWA镜像,