38.Ribbon


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;
}
}
38.Ribbon的更多相关文章
- Dynamics CRM 2015-Form之添加Ribbon Button
说到在CRM Form上添加Ribbon Button,那就不得不提到一个Tool:Ribbon Workbench,使用这个Tool,能为我们添加button带来不少便利. Ribbon Workb ...
- 从零开始学spring cloud(六) -------- Ribbon
一.Ribbon介绍 Ribbon就是客户端侧负责均衡实现的一种方式,那么Ribbon是什么呢? Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法.Ribb ...
- Ribbon对于SocketTimeOutException重试的坑以及重试代码解析
背景 本文基于Spring-Cloud, Daltson SR4 微服务一般多实例部署,在发布的时候,我们要做到无感知发布:微服务调用总会通过Ribbon,同时里面会实现一些重试的机制,相关配置是: ...
- SpringCloud | FeignClient和Ribbon重试机制区别与联系
在spring cloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试. 今天就来分别分析一下 FeignClient 和 Ribbon 重试机制 ...
- SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习
作者:个人微信公众号:程序猿的月光宝盒 环境:win10--idea2019--jdk8 1.搭建Eureka服务模块 1.1 新建eureka服务模块(Sping Initializr) 取名为eu ...
- SpringCloud的入门学习之概念理解、Ribbon负载均衡入门
1.Ribbon负载均衡,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端.负载均衡的工具. 答:简单的说,Ribbon是Netflix发布的开源项目,主要功能 ...
- springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig
原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服务实战:Eureka+Zuul+Ribbon+Hyst ...
- 微服务:Eureka+Zuul+Ribbon+Feign+Hystrix构建微服务架构
原文地址:http://blog.csdn.net/qq_18675693/article/details/53282031 本案例将打架一个微服务框架,参考来源官方参考文档 微服务:是什么?网上有一 ...
- SpringCloud2.0 Hystrix Ribbon 基于Ribbon实现断路器
原文:https://www.cnblogs.com/songlu/p/9949203.html 1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 Sprin ...
- eureka中显示有服务但是通过ribbon调用显示No instances available for service-hello的问题
一,问题 采取eureka集群.客户端通过Ribbon调用服务,Ribbon端报下列异常 ? 1 2 3 4 5 6 7 java.net.UnknownHostException: SERVICE- ...
随机推荐
- php 关于 json字符串使用json_decode 转数组为空
项目中遇见一个之前没有遇见的问题,就是 转化一个json字符串为数组时 为空,解决办法是使用 htmlspecialchars_decode 处理一下json字符串 然后 再使用 json_decod ...
- nightwatch入门教程
Nightwatch.js 是一个用来测试web应用和网站的自动化测试框架,它是由NodeJs编写的,使用了W3C WebDriver API(之前是Selenium WebDriver) 所以我们首 ...
- Python基础前言
计算机内部存储数据的原理 """计算机内部只认识01二进制"""是因为计算机是基于电工作的,而电是有高低电频之分00000001 000 ...
- dll帮助类
项目中有很多时候用到外部dll,调用的时候如果用静态调用,程序exe目录下有很多dll,看起来很乱,不利于后续维护:动态调用可以把dll放在想放的文件夹内,但是如果一个dll要用到的函数很多,动态调用 ...
- [OC] Block 是什么
Block 是 带有自动变量的匿名函数. emmmm 反正我看了也不懂,我们一点点用具体的例子分析一下block. 1. 我们现在要在一个文件中使用block(我们后面再提到两个界面传值的block ...
- Linux下aria2详细配置,以及接管浏览器下载项
本篇是在Deepin的环境下操作,大概可适用与Ubuntu和Debian,其他系的Linux不确定, 首先,我们安装aria2,使用命令行(在桌面右键可以打开)输入sudo apt install a ...
- Android学习——控件ProgressBar
1.常用属性
- AWT+Swing实现百度图像识别
1准备 1.1在百度智能云中创建自己的应用,得到API Key和Secret Key 1.2maven导入SDK依赖 2源码 import java.net.URLEncoder; /** * 植物识 ...
- 2023Hgame
2023Hgame Shared Diary 源代码先放一下 const express = require('express'); const bodyParser = require('body- ...
- 脚本执行sudo命令时: 免手动确认和免输入密码
1.sudo 命令有时候需要手动输入yes来确认执行 或者 软件在安装包下载完毕后还需要你输入y进行确认安装 .那如果是用脚本执行sudo 命令就可以用-y 参数来确认执行 sudo yum inst ...