Ribbon使用

Ribbon :处理客户端负载均衡和容错的解决方案

配置Ribbon的负载均衡

Rule接口: 定义客户端负载均衡的规则

  • RandomRule :随机选择
  • RoundRobinRule
  • ZoneAvoidanceRule

在这里插入图片描述

配置ribbon的负载均衡策略

  • 在配置文件中配置
user-center:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
  • 在java代码中配置
/**** 不同的服务使用不同的ribbon策略* @RibbonClient : 表示这个配置是为xxx服务的**/
//@Configuration
//@RibbonClient(name = "user-center",configuration = RibbonConfiguration.class)// 全局服务设置@RibbonClients(defaultConfiguration = RibbonConfiguration.class)
public class UserCenterRibbonConfiguration {
}

如果是为某个微服务单独配置负载均衡策略 @RibbonClient 指定配置文件的位置,,,这个配置文件不能被springboot扫描到,,父子上下文环境,,就像spring和springmvc的环境,,不能重叠,,如果重叠,相当于会变成全局的配置

Ribbon的配置文件

@Configuration
public class RibbonConfiguration {@Beanpublic IRule ribbonRule(){// 负载均衡策略为随机
//        return new RandomRule();// 根据权重      这个类是自己写的根据权重判断return new NacosWeightedRule();}/*** 配置 ping的规则* @return*/@Beanpublic IPing ping(){return new PingUrl();}
}

写自己的负载均衡算法:
继承AbstractLoadBalancerRule , 实现里面的 choose()方法:

/**** nacos自带的   根据权重的负载均衡策略,,,,    需要配置在ribbon的负载均衡中*/
@Slf4j
public class NacosWeightedRule extends AbstractLoadBalancerRule {@AutowiredNacosDiscoveryProperties nacosDiscoveryProperties;/*** 初始化规则,, 获取配置信息,,以便在choose中使用* @param clientConfig*/@Overridepublic void initWithNiwsConfig(IClientConfig clientConfig) {}/*** 返回与该规则关联的负载均衡器,,, 负载均衡器维护了服务实例列表* @return*/@Overridepublic ILoadBalancer getLoadBalancer() {return super.getLoadBalancer();}/*** 选择一个服务实例来处理请求,,,   在这个方法中实现自己的负载均衡策略* @param key* @return*/@Overridepublic Server choose(Object key) {try {/*** BaseLoadBalancer :  基本的负载均衡策略:  比如:轮询(round robin),随机选择(Random),,,*/BaseLoadBalancer loadBalancer = (BaseLoadBalancer) this.getLoadBalancer();// 想要请求的微服务的名称String name = loadBalancer.getName();// 负载均衡算法,,,     nacos内置了基于权重的算法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) {throw new RuntimeException(e);}}
}

在nacos中设置的权重就会生效:

在这里插入图片描述

用到的类

ILoadBalancer : 是 netflix ribbon中负责管理服务实例列表提供负载均衡策略的核心接口

  • getAllServers() 返回当前负载均衡器中维护的所有服务实例的列表
  • addServers() 向负载均衡器中添加service
  • chooseServer() : 根据负载均衡规则,选择一个实例来处理请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三阶魔方七步解法-最后还原顶层顶角(不是顶棱)

主要区别,最后一步是 顶层十字棱角已经还原,四个顶角的位置正确,但四个顶角的颜色没有对应。 因为现在基本都是6步还原法(找什么小鱼,眼睛),是先还原顶层使颜色一致,最后还原顶棱。但…

云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

一、 准备 telepresence 下载:https://www.telepresence.io/docs/latest/install/kubectl 下载:https://kubernetes.io/docs/tasks/tools/ 二、版本检测 $telepresence version Client: v2.5.3 (api v3) Root Daemon: not running User Daemon: not r…

leetcode面试经典二分系列刷题心得

闲来无事巩固算法基础,发现自己的二分几乎从来没系统刷过题,基础很是薄弱。 二分法不愧称为新人杀手,刷起来很是吃力,感觉明明学了几套二分模板,但是却不知道如何去运用,很多读者在初次尝试刷二分题时候&a…

24款奔驰C260L升级C63包围 典型的花小钱办大事

今天店里来了一台24款奔驰C260L 一提车就过来升级 我们公司还有包上牌服务 车主说 升级完包围 帮忙安排一下 原车的包围 没有那么霸气 特别是后杠 光溜溜的 升级后 四出尾喉 尾翼 直接牌面就起来了 星骏汇小许Xjh15863

Android12-RK3588_s-开机动画

目录 一、实现自定义开机动画 步骤一:准备 bootanimation.zip 步骤二:将 bootanimation.zip 放到 /system/media/bootanimation.zip下 步骤三:重启即可 二、注意事项 2.1 bootanimation.zip 压缩 2.2 bootanimation.zip 存放 2.3 boo…

打印机设置发票收据打印

由于各种打印机型号不一样,设置方式打印效果出入也很大,存在打印不全问题,发票右侧小数点后面的数字打印不出来、位置靠上下左右登问题,比较通用的设置方式如下: 首先找到控制面板,找到设备和打印机 进入到…

【C语言】printf()函数详解,手把手教你,保姆级!!!

目录 基本用法 printf()函数--占位符 占位符大全 printf()函数--限定宽度 printf()函数--正负--限定小数 printf()函数--输出部分字符串 总结 【C语言】printf()函数详解,手把手教你,保姆级!!! 基本用法 printf()…

openoffice安装

安装openoffice 下载安装包 建议去官网下载,这里给出官网地址:https://www.openoffice.org/download/ 这里以linux为例,所以我下载的是unbantu的版本(deb) 解压安装包 tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-deb_zh-…

【Hive】【Hadoop】工作中常操作的笔记-随时添加

文章目录 1、Hive 复制一个表:2、字段级操作3、hdfs 文件统计 1、Hive 复制一个表: 直接Copy文件 create table new_table like table_name;hdfs dfs -get /apps/hive/warehouse/ods.db/table_nameload data local inpath /路径 into table new_table;修复表: m…

25.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

1. 引言 1.1 背景 介绍校园求职系统的背景,说明为什么设计这个系统以及系统的重要性。 1.2 研究目的 阐述设计基于SSM框架的微信小程序校园求职系统的目标和意义。 2. 需求分析 2.1 行业背景 分析校园求职行业的特点和需求,以及目前市场上同类系统…

翻译: LLM工具使用和代理Tool use and agents

欢迎来到本周的最后一个视频。在这个视频中,我想与您分享LLM(大型语言模型)开始能够使用工具的情况,以及讨论一下前沿的“代理”主题,这是让LLM自己决定下一步采取什么行动的领域。让我们来看看。在早期的食物订单接收…

【C 剑指offer】有序整型矩阵元素查找 {杨氏矩阵}

目录 题目内容: 思路: 图形演示: 复杂度分析 C源码: /** *************************************************************************** ******************** ********************* ******…

遥感论文 | Scientific Reports | 一种显著提升遥感影像小目标检测的网络!

论文题目:MwdpNet: towards improving the recognition accuracy of tiny targets in high-resolution remote sensing image论文网址:https://www.nature.com/articles/s41598-023-41021-8 摘要 提出MwdpNet,以提高对高分辨率遥感&#xf…

connect: Network is unreachable问题解决

第一步:查看ifcfg-ens33配置文件 cd /etc/sysconfig/network-scripts/ cat ifcfg-ens33 发现问题:GATEWAY写错成GATWAY 第二步:修改 vim ifcfg-ens33 第三步:检测是否成功 ping baidu.com 成功!

Mysql 的ROW_NUMBER() 和分区函数的使用 PARTITION BY的使用

Mysql 的ROW_NUMBER() 和分区函数的使用 PARTITION BY的使用 描述: 遇到了一个需求,需要查询用户id和计划id,但是人员id的是重复,我想把人员id去重,支取一个。自然而然的就想到了 SELECT DISTINCT prj_plan.last_mon…

分布式事务--初识Seata和TC部署

1.Seata介绍 Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。致力于提供高性能和简单易用的分布式事务服务,为用户打造一站式的分布式解决方案。 官网地址:Seata | Seata,其中的文档、播客中提供了大量的使用说明…

Python读写arxml文件

文章目录 前言一、XML简介二、XML文件结构三、Python读取xml文件安装ElementTree库读取xml文件四、Python写入xml文件前言 本文主要通过介绍arxml文件,为后续python脚本开发奠定基础。 arxml是AUTOSAR XML的简称,是一个通用的配置/数据库文件,实质是一个xml文件。 ①更规范…

Mysql查询条件为大于时,不走索引失效场景

如下 where a>1 and b2 是不走索引。 因为a>1 , (这里说的是,a是走了索引,但是b没有走,为什么了?因为b只有在a相同时,b才有序,也就是说这个联合索引只用到了一半)的数据是无序的(1 4 1 2)&#xff0…

WGAN 优势小结

我在上一篇博文为什么 GAN 不好训练中,分析了原始 GAN 难以训练的原因,本篇博文将分析下 WGAN 的优势。 1. Wasserstein 距离 W 是指 Wasserstein,Wasserstein 距离又叫Earth-Mover(EM)距离。Wasserstein距离相比KL散…

ubuntu18.04 安装yolov5环境及推理环境

文章目录 1、安装anaconda31.2、环境变量配置1.3、添加/更换 conda 清华源 2、安装pytorch1.63、CUDA安装4、安装cuDNN5、安装tensorRT6、安装opencv4.67、tensorRT部署yolov5模型推理 1、安装anaconda3 官方网网址 https://www.anaconda.com/download#downloads去到下载的文…