SpringCloud入门实战-Ribbon

news2024/10/6 6:51:24

SpringCloud入门实战-Ribbon使用 原创

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.Ribbon原理
      • 2.Ribbon负载均衡策略
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

设计思路

实现思路分析

1.Ribbon原理

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.
在这里插入图片描述
服务列表:通过注册中心获取可用的服务列表
服务过滤:对原始服务列表使用一定策略进行过滤,并返回有效的服务器列表给客户端负载均衡器使用

服务心跳检测:用来检测一个微服务实例是否可用;如果检测到某服务实例不可用,则会从列表中及时移除
负载均衡策略:在多个服务实例中选择一个有效的服务实例,并进行相应的服务请求处理

2.Ribbon负载均衡策略

RandomRule 随机策略 随机选择server
RoundRobinRule 轮询策略 按照顺序选择server(ribbon默认策略)
按照顺序选择server(ribbon默认策略)重试策略 在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server
ZoneAvoidanceRule 区域权重策略 综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server
ribbon.MaxAutoRetries=0 #对当前实例的重试次数,默认0
ribbon.MaxAutoRetriesNextServer=1 #切换实例的重试次数,默认1
ribbon.ReadTimeout=5000 #请求处理的超时时间,默认5秒

ribbon.ConnectTimeout=2000 #请求连接的超时时间,默认2秒

如果使用feign调用服务,里面默认包含了robbion,不需要特殊处理。

Robbion负载均衡器是spring Cloud默认的负载均衡器,但现在已处于维护的状态,不建议使用,Spring Cloud推荐使用BlockingLoadBalancerClient来作为负载均衡器;可以把spring.cloud.loadbalancer.ribbon.enabled设为false来停用Robbion。

参考资料和推荐阅读

[1].https://blog.51cto.com/wuyongyin/4858695?b=totalstatistic

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

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

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

相关文章

计算机软技术,如何画好一张架构图?

什么是架构图? 如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义…

动态路由协议RIP

数据来源 一、动态路由 基于某种协议实现 1)动态路由拓补图 2)动态路由特点 减少了管理任务占用了网络带宽 3)动态路由协议概述 路由器之间用来交换信息的语言 4)度量值 跳数、带宽、负载、时延、可靠性、成本 跳数&#xff1a…

JavaScript数据结构【数组---for...of循环迭代】

继for循环,和forEach方法迭代数组后,要想迭代数组的值还可以用for...of循环 使用: // for...of循环示例 let array [1, 2, 3] for (let key of array) {console.log(key); } /* 输出:123 */ 可以看到:使用for...of…

嵌入式介绍与应用

嵌入式介绍与应用1 概念桌面对比2 特点3 发展历史3.1 计算机发展3.2 嵌入式发展4 开发能力要求5 应用6 规模参考1 概念 嵌入式系统由硬件和软件组成。是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的…

构建过程:从源码到dist文件

问题 有没有好奇过,自己写的前端代码是怎么变成上线可用的代码的? 前言 目前实现从源码到可用的静态文件,我们都是借助打包工具实现的,目前用的比较多的是webpack、rollup、vite..., 那么以上问题也可以描述为“构建工具是如何…

ChatGPT教程之 03 ChatGPT 中构建 Python 解释器

这个故事的灵感来自于一个类似的故事,在 ChatGPT 中构建虚拟机。我印象深刻并决定尝试类似的东西,但这次不是 Linux 命令行工具,而是让 ChatGPT 成为我们的 Python 解释器。 这是初始化 ChatGPT 的初始命令: I want you to act as a Python interpreter. I will type com…

<<两万字通关Java IO流>>

✨✨hello,愿意点进来的小伙伴们,你们好呐! 🐻🐻系列专栏:【JavaEE】 🐲🐲本篇内容:详解Java IO流 🐯🐯作者简介:一名现大二的三非编程小白&#…

python----函数、文件、以及高级特性

文章目录前言一、函数的基本概念二、文件OS模块json模块高级特性生成式生成器闭包装饰器前言 一、函数的基本概念 **全局变量:**在函数外边定义的变量,全局生效 **局部变量:**在函数里边定义的变量,局部生效 如果要在函数中修改全…

【BL808】缘起:M1s开发板的第一个示例-LVGL

一、sipeed M1s介绍 1.1 M1s开发板介绍 1.1.1 开发板特性 板载两个USB口(一个用于USB-TTL,一个用于通过模拟U盘的方式烧录c906的固件)板载1.69 inch的触摸屏和摄像头接口板载MIC、LED和TF卡座板载一个BL702做成的集USB-TTL和JTAG的调试器。…

面试收集汇总

最近的工作情况,难度比较大的项目。 http servlet生命周期,在springmvc对原生servlet做了一个怎么样的包装来实现一个自己的mvc能力的? 1.加载和实例化。Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检…

[附源码]JAVA毕业设计养老院老人日常生活管理系统(系统+LW)

[附源码]JAVA毕业设计养老院老人日常生活管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

尝试使用CubeMX做stm32开发之十五:FatFs的移植方法

一、数据类型 FatFs使用的数据类型在ff.h中定义,适用于绝大多数平台: BYTE 8-bit无符号整形数据,范围0~28-1 WORD 16-bit无符号整形数据,范围0~216-1 DWORD 32-bit无符号整形数据,范围0~232-1 QWORD 64-bit无符…

【C#基础学习】第十八章、接口

目录 接口 1.接口 1.1 声明接口 1.2 实现接口&调用接口 1.2.1 显式接口实现方式 1.2.2 显式接口实现&隐式接口实现的使用场景 1.3 as运算符 2.接口继承接口 接口 1.接口 接口的意义:C#的继承不支持一个子类拥有多个父类。而接口的存在就是为了弥补这…

C# 数组的声明与分配空间

一 数组的概述 数组是多个相同类型数据的组合;数组属引用类型; 1 一维数组声明 一维数组的声明方式: int[] a1;注意方括号写到变量名的签名; double [] b mydate[] c; C# 语言中声明的数组时不能指定其长度(数组中元素的个数)…

【RPA进阶】 一文了解使用Visual Studio扩展UiPath Activity Creator创建自定义Activity

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介:UiPath在传统的RPA(Robotic…

Dockerfile构建Springboot镜像

Dockerfile构建Springboot镜像 文章目录Dockerfile构建Springboot镜像简介实例演示前期准备Docker环境Springboot项目Dockerfile文件Windows要求构建镜像启动测试Linux要求构建镜像启动测试简介 容器技术大流行的时代,也是docker大流行的时代。 此文章以一个简单的实…

无线网卡收包流程

环境 x86_64 Linux, AR9462 无线网卡,PCIe 接口 ath9k 驱动 收包过程 ① 无线网卡从空气中捕获到无线数据包 【物理层】 ② 无线网卡把帧 DMA 到内存的 Ring Buffer ③ 无线网卡向 CPU 发起中断请求 ④ CPU 响应中断,执行 ISR,…

fatfs相关宏定义说明

fat16文件系统DBR 宏定义如下: #define BS_JmpBoot 0 //跳转指令。3字节。/* x86 jump instruction (3-byte) */ #define BS_OEMName 3 //OEM名称。8字节。/* OEM name (8-byte) */ #define BPB_BytsPerSec 11 //扇区字节数。2字节。/* Sector size [byte…

Python学习基础笔记四十五——包

C:\Program Files\Python310\Lib 1、 包的概念:把解决同一类问题的模块放在同一个文件夹里,我们就称为包。 2、在PyCharm中创建一个包: 文件夹中会有一个init.py文件。 在Python3中没有这个__init__.py文件也没有问题。 3、在包A和包B下有同…

Go设计与实现 -- map哈希表

Go语言中的哈希表有它自己的一套实现方式。和Java的哈希表还是有些不同的,但是为了保证知识体系的完整性,我还是准备从头开始说起。 哈希表设计原理 哈希表的读写时间复杂度是O(1),因为它提供了键值之间的映射。要实现一个性能优异的哈希表…