当前位置: 首页 > news >正文

Ribbon负载均衡(自己总结的)

文章目录

  • Ribbon负载均衡
    • 负载均衡解决的问题
    • 不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了
    • Ribbon负载均衡代码怎么写
    • ribbon负载均衡依赖是怎么引入的?

Ribbon负载均衡

负载均衡解决的问题

首先Ribbon负载均衡配合Eureka注册中心一块使用。

在SpringCloud中为什么会有负载均衡?以及它解决的主要是什么问题?
负载均衡主要解决的问题是如何把请求高效地分发到多个服务实例上,以及如何保证服务的高可用性和弹性。

注意这里的服务实例不是指Eureka服务器注册中心,而是指Eureka注册中心的微服务,比如下图:
在这里插入图片描述
怎么理解这里的spring.application.name和instance-id?那个才表示一个具体单位的微服务?
Instance-id表示一个微服务,而spring.application.name表示一个微服务大类,里面可以包含多个具体的微服务实例。比如cloud-payment-service就表示提供者payment的一个微服务大类,这个大类里面有多个微服务实例,每个微服务实例除了端口号不同,其它的东西都是相同的。
因为我们idea里面的每个微服务模块在注册到Eureka注册中心的时候,spring.application.name微服务的名字,也就是serviceid是可以一样的,但是每个微服务的instace-id实例id是不可以一样的。

然后我们开头说的服务实例,指的就是Eureka注册中心中每个instance-id实例id所代表的微服务。

Ribbon负载均衡作用

  • 避免单点故障造成的程序崩溃。比如如果我们的Cloud-payment-service微服务大类中只写了一个微服务实例payment8001,那么如果这个微服务崩溃之后,我们的整个程序就会崩溃了,但是如果我们写了多个微服务实例(这些微服务实例除了端口号其他都是相同的),比如我们又写了一个微服务实例payment8002,那么既便微服务实例payment8001崩溃了,我们的程序也不会崩溃,因为通过负载均衡我们可以去访问payment8002微服务实例。
  • 可以处理更多的客户端请求。如果客户端请求非常多,但我们只有一个payment8001微服务实例,那么我们处理的请求个数就有限。但如果我们想要提高请求的处理能力该怎么办呢?我们可以新加一个相同的微服务实例比如说payment8002。

不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了

刚开始的时候我还以为负载均衡指的是每次请求来了之后,我把这些请求分发给不同的Eureka-Server注册中心;其实不是的,我们的多个请求来了还是给一个Eureka-Server服务器,但是我们会把这些请求分发给一个spring.application.name微服务大类里面的多个instance-id微服务实例,以减轻多个请求如果都给同一个instance-id微服务实例造成的负担。

那么Eureka-Server服务器集群有什么功能呢?其实很简单,你可以理解成是一个Eureka注册中心的备份,当一个Eureka注册中心崩了之后,我们可以去读取Eureka-Server服务器集群中另外一个Eureka注册中心的微服务,这样就可以保证我们的程序正常的运行下去。

Eureka-Server服务器集群中所有的Eureka注册中心中注册的微服务都是相同的。

Ribbon负载均衡代码怎么写

Ribbon负载均衡一般都是配合RestTemplate一块使用。
首先写RestTemplate配置类,如下图:
在这里插入图片描述
然后写负载均衡配置类(注意不能被@ComponentScan注解扫描到,因此不能和主启动类放到同一个包中),如下图:
在这里插入图片描述
负载均衡的规则可以是随机,可以是按照顺序,可以是加权,直接返回相关的对象即可。

然后在启动类上写@RibbonClient负载均衡注解,如下图:
在这里插入图片描述
上面的name表示我们会负载均衡调用cloud-payment-service微服务大类下面的每个instance-id微服务实例。

ribbon负载均衡依赖是怎么引入的?

可以发现我们只是引入了eureka-client依赖,但是并没有明确引入ribbon负载均衡相关的依赖,那么为什么可以使用@RibbonClient负载均衡的注解呢?因为在eureka中已经包含了ribbon负载均衡依赖了,如下图:
在这里插入图片描述

相关文章:

Ribbon负载均衡(自己总结的)

文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的? Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…...

Leetcode 力扣92. 反转链表 II (抖音号:708231408)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…...

OSI七层模型和TCP/IP四层模型的区别

OSI七层模型 1.物理层&#xff08;Physical Layer&#xff09; 实现相邻节点之间比特流的透明传输&#xff0c;尽可能屏蔽传输介质带来的差异。典型设备&#xff1a;集线器&#xff08;Hub&#xff09;。 2.数据链路层&#xff08;Data Link Layer&#xff09; 将网络层传下来…...

在虚拟机上安装MySQL和Hive

在虚拟机上安装MySQL和Hive的步骤如下。这里将分别针对MySQL和Hive的安装进行说明。 MySQL安装步骤 1. 准备工作 下载MySQL安装包&#xff0c;选择与你虚拟机操作系统版本相匹配的MySQL版本&#xff0c;例如MySQL 8.0.35。 2. 卸载旧版本&#xff08;如果已安装&#xff09…...

Vue 2 和 Vue 3 中同步和异步

Vue 2 和 Vue 3 中同步和异步 Vue 2 同步和异步 同步更新 (Synchronous Updates) Vue 2 在数据更新后会进行同步渲染更新,但为了性能优化,Vue 会在内部队列中异步地进行 DOM 更新。这意味着数据变化会立即被捕捉到,但实际的 DOM 更新会被推迟到下一个事件循环队列中。new V…...

ssm150旅游网站的设计与实现+jsp

旅游网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞…...

【加密与解密(第四版)】第十四章笔记

第十四章 漏洞分析技术 14.1 软件漏洞原理 缓冲区溢出漏洞&#xff1a;栈溢出 堆溢出、整型溢出&#xff08;存储溢出、计算溢出、符号问题&#xff09; UAF&#xff08;Use-After-Free&#xff09;漏洞 14.2 ShellCode 功能模块&#xff1a;下载执行、捆绑、反弹shell 14.3 …...

鸿蒙系统和安卓系统通过termux搭建Linux系统—Centos

目录 1. 前言 2. 效果图展示 3. 安装termux 4. 安装Centos系统 4.1 更换源 4.2 拉取镜像 4.3 启动centos 5.结尾 1. 前言 大家好&#xff0c;我是jiaoxingk 今天这篇文章让你能够在手机或者平板上使用Linux-Centos系统 让你随时随地都能操作命令行进行装13 2. 效果图展示…...

数据结构的希尔排序(c语言版)

一.希尔排序的概念 1.希尔排序的基本思想 希尔排序是一种基于插入排序算法的优化排序方法。它的基本思想如下: 选择一个增量序列 t1&#xff0c;t2&#xff0c;......&#xff0c;tk&#xff0c;其中 ti > tj, 当 i < j&#xff0c;并且 tk 1。 按增量序列个数k&#…...

使用Node.js搭建服务器

使用Node.js搭建服务器 1.安装Node.js和npm 安装教程自行搜索&#xff08;好多&#xff09;&#xff0c;建议Node.js直接安装在C盘 注意镜像的设置&#xff1a;npm install -g cnpm --registryhttps://registry.npm.taobao.org 注意版本检查&#xff1a; //以下是我使用的版…...

网络编程——多进程的服务器

多进程的网络服务器 多进程的网络服务器是一种使用多个进程来处理并发网络请求的服务器架构。在这种架构中&#xff0c;服务器在接收到客户端连接请求后&#xff0c;会创建一个新的子进程来处理该请求&#xff0c;从而允许服务器同时处理多个客户端连接。多进程服务器通常用于…...

代码随想录算法训练营第二十一天| 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

[LeetCode] 530. 二叉搜索树的最小绝对差 [LeetCode] 530. 二叉搜索树的最小绝对差 文章解释 [LeetCode] 530. 二叉搜索树的最小绝对差 视频解释 题目: 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其…...

【面试】JDK和JVM是什么关系?

目录 1. JDK2. JVM3. 关系 1. JDK 1.Java Development Kit&#xff0c;java开发工具包。2.提供了java应用程序开发所需的所有工具和API。3.JDK包含了JRE&#xff08;Java Runtime Environment&#xff09;,即Java运行环境&#xff0c;以及编译Java源代码的编译器&#xff08;j…...

旺店通与金蝶云星空 就应该这样集成打通

在当今数字化商业环境中&#xff0c;企业需要高效、灵活的系统来支持其业务运营。旺店通和金蝶云星空作为两个领先的企业管理解决方案&#xff0c;它们的集成能够为企业带来无缝的业务流程和数据一致性。本文将详细介绍旺店通与金蝶云星空的全场景集成方案&#xff0c;包括主数…...

linux开发之设备树

设备树的基本概念 1.什么是设备树?为什么叫设备树呢? 设备树是描述硬件的文本文件&#xff0c;因为语法结构像树一样。所以叫设备树。 2.基本名词解释 <1>DT:Device Tree //设备树 <2>FDT:Flattened Device Tree //开放设备树&#xff0c;起源于0penFirmware(0F…...

DQL(数据查询)

目录 1. DQL概念 2. DQL - 编写顺序 3. 基础查询 3.1 查询多个字段 3.2 字段设置别名 3.3 去除重复记录 3.4 案例 4. 条件查询 4.1 语法 4.2 条件 4.3 案例&#xff1a; 5. 聚合函数 5.1 常见的聚合函数&#xff1a; 5.2 语法 5.3 案例&#xff1a; 6. 分组查…...

LeetCode 2951.找出峰值:模拟(遍历)

【LetMeFly】2951.找出峰值&#xff1a;模拟&#xff08;遍历&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-peaks/ 给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的…...

软考结束。有什么要说的

1. 竟然是机试&#xff0c;出乎我意料。是 考试机构觉得笔试成本高了么。这次的考试是机试&#xff0c;相比以往有所不一样。感言是不是以后都会在固定地点考试也说不准。 2. 遇到年轻人。 这次旁边的一个女同学第一次参加&#xff0c;还像我询问了一些关于软考的事。我是有…...

Matlab读取Swarm球谐系数,并绘制EWH全球格网图(存在疑问)

ICGEM官网下载 COST-G发布的4040的球谐系数 close all; clearvars -except; % addpath(E:\Code\Tool\Function\GRACE_functions); dir_degree_1 E:\Code\GRACE_data\Degree_1\deg1_coef.txt; dir_c20 E:\Code\GRACE_data\Degree_2\C20_RL06.txt; myDir_Swarm E:…...

Vue集成Iframe

一、应用场景&#xff0c;为什么要集成Iframe&#xff1f; 1、庞大项目拆分后&#xff0c;便于管理和部署&#xff0c;用集成Iframe的方法合并 2、避免功能重复开发&#xff0c;共用模块可单独开发为一个项目&#xff0c;既可独立部署&#xff0c;也可集成到中台系统 二、集成…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...