Ribbon入门使用 RestTemplate loadbance 负载均衡

news2024/10/6 22:31:11

一、概念

1. Ribbon

Ribbon是实现一套客户端,负载均衡的工具,简单的说,ribbon是一个开源项目,主要提供给客户端软件负载均衡算法和服务调用。

负载均衡和服务调用的提供者

主要用于:

  • 负载均衡

    • 将用户的请求平均到分配多个微服务当中,达到服务HA
    • 本地负载均衡: 会在注册中心上的列表进行负载均衡又称为进程内负载均衡
  • 服务调用

对于负载均衡有很多种实现方式,例如我们之前学到过的Nginx的负载均衡,那么Ribbon本地负载均衡Nginx服务端负载均衡有什么区别呢?

  • Nginx服务器负载均衡负责的是接受客户端请求,然后由Nginx实现转发请求,即负载均衡由服务端进行实现
  • Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心将服务列表缓存到JVM本地,从而实现本地实现RPC调用远程服务。

最后简单总结,Ribbon就是负载均衡+RestTemplate

image-20230512143110950

二、RT使用

在我们使用,不需要引如Ribbon依赖,因为Eureka已经中有使用Ribbon了

  • Entity: 返回详细的对象
    • 响应信息
    • 响应码…
  • Object: 可以直接理解为JSON

三、负载均衡规则

IRule规则

  • 轮询
  • 随机
  • 重试
  • 轮询的扩展,轮询看响应速度
  • 过滤故障实例,选择并发量最小的服务
  • 默认规则

image-20230512151716247

1. 规则替换

注意配置规则!!

自定义配置类不能放在@ComponetScan所扫描的包和子包下,否则配置会被所有Ribbon客户端共享,达不到特殊定制化的目的

  1. 远离ComponetScan创建包

创建myrule包;

image-20230523191133311

  1. 添加MySelfRule规则类
@Configuration
public class MyIRule {
    /**
     * 开启随机轮询
     * @return
     */
    @Bean
    public IRule iRule(){
        return new RandomRule();
    }
}
  1. 主启动类添加@RibbonClient

image-20230523191322049

注意一个坑点,CLOUD-PAYMENT-SERVICE一定要大写,否则自定义规则无法启动。


2. 负载均衡轮询

原理

负载均衡算法: rest接口第几次请求%集群总数=实际调用服务器的位置下标

image-20230523212333495

JUC(CAS && 自旋锁);

手写源码

等待…

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

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

相关文章

华为OD机试之二元组个数(Java源码)

二元组个数 题目描述 给定两个数组a,b,若a[i] b[j] 则称 [i, j] 为一个**二元组**,求在给定的两个数组中,二元组的个数。 输入描述 第一行输入 m 第二行输入m个数,表示第一个数组 第三行输入 n 第四行输入n个数&…

linux 安装、卸载docker(一)

安装流程 # 1.设置镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 2.安装、更新yum软件包索引 // 安装yum,docker需要的安装包 yum install -y yum-utils // 更新yum软件包索引 yum makecache fast# …

pmp新手报名需要的步骤

球很多大中型企业,如华为、腾讯、字节、联想等,招聘项目管理相关人员时,都会把持有PMP证书当作必选或优选的招聘条件。 那么PMP的报考条件是什么呢?以下是PMI官网发布的PMP考试报考条件: 一、报名考生必须具备35小时…

不到一分钟,即刻拥有这 22 款插件主题

开源 API 管理工具 Postcat 的插件广场最近上新了插件主题,看了看,真的有几款我很喜欢。可能会有朋友有跟我一样的疑问,如何拥有这些好玩的插件主题。 第一步当然是找到 Postcat ,安装 Postcat ! 找到插件广场 浏览并选择喜欢的主…

云原生之部署Docker轻量级管理面板EasyDockerWeb

云原生之部署Docker轻量级管理面板EasyDockerWeb 一、EasyDockerWeb介绍1. EasyDockerWeb简介2. 环境要求3. EasyDockerWeb特点 二、本地环境介绍1. 本地环境规划2. 本次实践介绍 三、本地环境检查1.检查Docker服务状态2. 检查Docker版本 四、下载EasyDockerWeb镜像五、部署Eas…

25岁转行做软件测试1年多了,写给还在迷茫的测试圈朋友

相比开发以后的职业生涯;我更看好软件测试的未来。 其次具有开发经验。对软件测试会有相当大的帮助,前面学了测试基础工具后,后期自动化提升会更快。这样才能更好的胜任软件测试工作。 最重要的是测试不是青春饭,和软件开发相比…

VUE 3.0 -- 直播推拉流、流视频播放

🛴🛴前言: 该 Demo 基于 OBS推流 Nginx Vue 3.0 Nplayer.js hls.js ,目的只是实现流媒体播放,以及简易推拉流直播。 文章目录 前端组件 NPlayer.js安装 nplayer.js 流视频播放页面元素初始化播放器清晰度控件样式…

Linux中与命名空间相关的内核数据结构

【摘要】本文详细讲述了在Linux内核中与命名空间概念相关的内核数据结构及其内在联系。 十、命名空间(namespace)相关数据结构 Linux内核通过数据结构之间互相的连接关系,形成了一套虚拟的命名空间的虚拟化概念。 10.1 struct pid_namespace \linux-2.6.32.63\i…

关于数据科学的文本分析案例

在本文中,我们尝试通过进行一些文本挖掘来发现数据科学相关概念。我们将从一篇关于数据科学的文本开始,从中提取关键字,然后尝试可视化结果。 作为文本,将使用维基百科的数据科学页面: url https://en.wikipedia.org…

Java 高级应用-多线程-(二)线程安全问题及解决

当我们使用多个线程访问同一资源(可以是同一个变量、同一个文件、同一条 记录等)的时候,若多个线程只有读操作,那么不会发生线程安全问题。但是如 果多个线程中对资源有读和写的操作,就容易出现线程安全问题。 5.1 同…

四段论提问让ChatGPT更懂你心!

用户故事是描述客户需求的方法,通常记为四段论的格式: 角色-功能-目的-验收标准。 如: 作为一个家庭主妇,我需要一个30平方米的餐厅,用以招待10位客人聚餐。 我希望这个餐厅&…

Spring/SpringBoot与RabbitMQ整合

具体代码 依赖&#xff1a; <dependencies><!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.0</v…

定薪17K*15,阿里测开岗上岸面经分享....

先简单介绍一下我自己吧&#xff0c;等会大家以为我是什么学历狂人&#xff0c;技术大牛&#xff0c;我毕业于广东一个普通本科院校&#xff0c;绝对不是什么双一流大学&#xff0c;大家不要有距离感&#xff0c;这也是我为什么来分享的原因&#xff0c;因为我觉得我这段经验还…

github SSH 生成和使用(详细)

通过ssh连接github&#xff0c;可以有效的提升安全性 1.设置位置 2.生成ssh密钥&#xff08;windows&#xff09; 打开git bash&#xff0c;输入以下命名&#xff0c;把your_emailexample.com换成自己的github账号 ssh-keygen -t rsa -b 4096 -C "your_emailexample.co…

【计算几何】判断多边形边界顺逆时针 C++代码实现

文章目录 一、多边形边界顺序二、数学原理2.1 Green公式2.2 鞋带公式 三、代码实现 一、多边形边界顺序 多边形可以由一个点集 { v 1 , v 2 , . . . , v n } \{v_1,v_2,...,v_n\} {v1​,v2​,...,vn​} 表示&#xff0c;构成多边形的点集确定&#xff0c;多边形边界的顺序也就…

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&a…

Fabric模块功能介绍(一)

主要有5个模块,分别是peer、orderer、cryptogen、configtxgen、configtxlator 模块功能peer主节点模块&#xff0c;负责存储区块链数据、运行维护链码orderer交易打包&#xff0c;排序模块cryptogen组织和证书生成模块configtxgen区块和交易生成模块configtxlator区块和交易解…

【小程序开发日记】django学习笔记4

在没有学完django的情况下匆匆上阵。。。 这次的任务主要是管理数据库并实现浏览的功能。 首先介绍一下微信小程序连接后端的接口&#xff1a;wx.request 基本上输入后会比较经常使用的就是这几个参数。 接下来明确一下这次的工作&#xff1a; 我需要管理两个数据库&#x…

Python - numpy basic

目录 数组array的创建 1 通过list创建array 2 通过list创建二维数组 3 通过arange函数创建 等差数组 4 通过zeros函数创建 零矩阵 5 通过eyes函数创建 单位矩阵 数组array的访问 1 访问形状/元素个数/数据类型 2 访问一维数组的位置/范围 3 访问二维数组的位置/范围 4…

Unity Emisson 自发光属性全局照明

给想要自发光的物体&#xff0c;选择Unity自带Standard Shader。然后勾选Emisson 如下图&#xff1a; 属性&#xff1a; Color指定发光的颜色和强度。单击 Color 框可打开 HDR Color 拾色器。在此处可以更改光照的颜色和发光的强度 (Intensity)。要指定材质的哪些区域发光&…