负载均衡:从理论到实践 ---day04

news2024/9/21 5:44:09

负载均衡

  • 负载均衡
    • 1.什么是负载均衡
    • 2.负载均衡的分类
      • 硬件负载均衡
      • 软件负载均衡
      • 选择
    • 3.引入负载均衡的好处
  • 第一个Ribbon实例
    • 步骤1:
    • 步骤2:
    • 步骤3:
    • 步骤4:
  • 问题
      • 1. 负载均衡的主要目标是什么?
      • 2. 负载均衡器的作用是什么?
      • 3. 常用的负载均衡算法有哪些?请解释其中一两种。
      • 4. 什么是会话保持(Session Persistence),为什么它很重要?

负载均衡

1.什么是负载均衡

负载均衡是一种技术,它帮助管理和分配网络流量,使得多个服务器共同承担处理任务的工作。这样做的目的是为了确保没有一个服务器因为过载而影响服务的质量,同时也能提高整个系统的稳定性和响应速度。当用户的请求进来时,负载均衡器会根据一定的规则,将这些请求分散到不同的服务器上处理。如果其中某个服务器出现问题,负载均衡器还可以将请求转给其他正常工作的服务器,保证服务不会中断。这种技术广泛应用于网站和在线服务中,以支持大量的用户访问。

2.负载均衡的分类

你的描述准确地概括了硬件负载均衡与软件负载均衡的主要区别和特点。下面是更详细的解释:

硬件负载均衡

硬件负载均衡通常指的是专用设备,这些设备设计用于处理和分配网络流量。它们通常具有以下特点:

  • 高性能:专门设计的硬件可以提供比普通服务器更高的性能,尤其是在处理大量并发连接时。
  • 可靠性:这些设备往往具备冗余组件和热插拔功能,以提高系统的稳定性和可用性。
  • 易于管理:它们通常配备有图形界面,方便管理员进行配置和监控。
  • 智能功能:许多硬件负载均衡器提供了高级功能,如健康检查、会话持久性、SSL卸载等。
  • 成本:虽然初期投资可能较高,但对于需要高可用性和高性能的企业来说,长期来看可能是更经济的选择。

软件负载均衡

软件负载均衡则是指运行在标准服务器上的软件解决方案。其特点包括:

  • 灵活性:可以根据现有的IT基础设施轻松部署,适用于各种规模的企业。
  • 成本效益:相比硬件解决方案,软件负载均衡通常成本更低,特别是对于小型和中型企业。
  • 定制化:可以根据特定需求进行调整和定制。
  • 集成:可以与现有的虚拟化和云平台无缝集成。
  • 更新:软件负载均衡器通常更容易升级和维护。

选择

选择硬件还是软件负载均衡取决于组织的具体需求,包括预算、现有基础设施、所需的功能集以及对可靠性和性能的要求。随着技术的发展,两者之间的界限也在逐渐模糊,许多现代解决方案都提供了软硬件结合的选项。

3.引入负载均衡的好处

引入负载均衡,可以将负载(工作任务)进行平衡、分摊到多个执行单元上运行。例如,Web服务器、FTP服务器、企业关键应用服务器和其他主要任务服务器等,协同完成工作任务。

负载均衡器会维护一个可用的服务清单,通过心跳检测来剔除清单中故障的服务端节点。当客户端借助网络发送请求到负载均衡器时,负载均衡器从维护的服务清单里面选择一个服务器,并将客户端请求转发到此服务器,从而提高系统的可用性和稳定性。

第一个Ribbon实例

步骤1:

创建父工程ribbon-parent,将搭建的高可用集群中的5个子项目都复制到ribbon-parent父工程中,并依次添加为Maven项目。
在这里插入图片描述

步骤2:

改造服务提供者-创建PortController类

在项目eureka-provider和eureka-provider-another中新建controller包,并创建PortController类,该类能够返回当前项目的端口号。
在这里插入图片描述
在这里插入图片描述

注意:新建的包要跟主程序启动类Application在同一路径下。

步骤3:

改造服务消费者-含有Ribbon负载均衡功能


(1)添加ribbon依赖

在项目eureka-consumer的pom文件中添加Ribbon的依赖如下:

<dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

  </dependency>

(2)创建配置类

新建config包,并在该包下创建RibbonConfig类,该类注入restTemplate的Bean,并在这个Bean中加上@LoadBalanced注解,使得restTemplate具有负载均衡功能。
在这里插入图片描述
在这个例子中,restTemplate() 方法返回一个 RestTemplate 实例,由于标注了 @LoadBalanced,所以这个实例将被配置成一个负载均衡客户端。这意味着,当你使用这个 RestTemplate 来调用一个服务时,它会通过负载均衡器来选择一个适当的实例来进行通信,而不是直接指向一个特定的服务实例。

通常情况下,这样的配置会配合服务发现组件(如 Eureka, Consul 等)一起工作,以动态地管理服务实例列表,并根据这些信息来决定请求应该路由到哪个实例。这种方式对于构建微服务架构非常有用,因为它可以帮助隐藏服务实例的具体位置细节,并提供了一个机制来处理实例的故障转移。

(3)创建Service类

新建service包,并在该包下创建一个RibbonService类,在该类的hi()方法中使用restTemplate调用eureka-client的API接口。
在这里插入图片描述
(4)创建Controller类

新建controller包,并在该包下创建一个RibbonController类,在该类上添加@RsetController注解,将RibbonController 标注为一个Controller类。在类中写一个hi ()方法,调用RibbonService的hi()方法。
在这里插入图片描述

步骤4:

测试运行

依次启动服务器eureka-server和eureka-server-another, 服务提供者eureka-provider和eureka-provider-another,服务消费者eureka-consumer。

在浏览器上访问http://localhost:7071,http://localhost:7009,观察服务注册列表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


问题

遇到大面积爆红,与pom的颜色没变。

在这里插入图片描述
点击file -> Invalidate ->点击启动,无效缓存
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
多尝试两遍,不行再去找别的博客。苦瓜


1. 负载均衡的主要目标是什么?

负载均衡的主要目标包括:

  • 分配网络流量,使各个服务器的负载尽可能均衡。
  • 提高系统的可用性和响应速度。
  • 通过故障转移提高系统的容错能力。
  • 优化资源使用,确保所有服务器都能高效运行。

2. 负载均衡器的作用是什么?

负载均衡器的作用是接收来自客户端的请求,并根据一定的策略将这些请求转发到一组后端服务器中的某一台。此外,负载均衡器还负责监控后端服务器的健康状况,并且能够在服务器发生故障时自动重新分配流量。

3. 常用的负载均衡算法有哪些?请解释其中一两种。

常用的负载均衡算法包括:

  • 轮询(Round Robin):按照顺序将请求分配给后端服务器。
  • 最少连接数(Least Connections):将新的请求分配给当前连接数最少的服务器。
  • IP哈希(IP Hash):根据客户端的IP地址计算出一个哈希值,将请求分配给固定的后端服务器。

例如,轮询算法是一种非常简单的方法,它按顺序循环地将请求分配给后端服务器。这种方法易于实现,但在某些情况下可能不够公平,因为每个服务器的处理能力可能不同。

4. 什么是会话保持(Session Persistence),为什么它很重要?

会话保持是指将来自同一个客户端的请求始终定向到同一个后端服务器。这对于需要维护会话状态的应用非常重要,例如Web应用程序中的购物车功能。通过会话保持,可以确保用户的会话数据不会丢失,并且能够提供一致的服务体验。

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

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

相关文章

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1&#xff09;项目简介2&#xff09;界面原型3&#xff09;实战目标 2 搭建实战环境1&#xff09;服务端2&#xff09;管理端前端工程3&#xff09;用户端前端工程4&#xff09;测试 3 熟悉项目代码1&#xff09;接口文…

Linux操作系统面试题记录

一、进程与线程 1.并发和并行的区别 并发&#xff1a;一个cpu处理器处理多个任务&#xff1b; 并行&#xff1a;多个cpu处理器处理多个任务&#xff1b; 2.进程和线程是什么&#xff1f;区别&#xff1f;何时用线程何时用进程&#xff1f; Linux中其实没有进程线程之分&…

面试官:讲一讲Spring MVC源码解析

好看的皮囊千篇一律、有趣的灵魂万里挑一 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】获取福利&#xff0c;回复【项目】获取项目源码&#xff0c;回复【简历模板】获取简历模板&#xff0c;回复【学习路线图】获取学习路线图。…

驱动器磁盘未格式化恢复实战

驱动器磁盘未格式化的深度剖析 在日常的数字生活中&#xff0c;驱动器作为数据存储的重要载体&#xff0c;承载着用户无数的珍贵资料。然而&#xff0c;当遇到“驱动器中的磁盘未被格式化”的提示时&#xff0c;这份平静往往会被瞬间打破。这一状况不仅让用户感到困惑和焦虑&a…

JZ2440开发板——S3C2440的UART的使用

以下内容源于韦东山课程的学习与整理&#xff0c;如有侵权请告知删除。 一、UART硬件简介 UART&#xff0c;全称是“Universal Asynchronous Receiver Transmitter”&#xff0c;即“通用异步收发器”&#xff0c;也就是我们日常说的“串口”。 它在嵌入式中用途非常广泛&…

LabVIEW提高开发效率技巧----VI服务器和动态调用

VI服务器&#xff08;VI Server&#xff09;和动态调用是LabVIEW中的两个重要功能&#xff0c;可以有效提升程序的灵活性、模块化和可扩展性。通过这两者的结合&#xff0c;开发者可以在运行时动态加载和调用VI&#xff08;虚拟仪器&#xff09;&#xff0c;实现更为复杂的应用…

【 html+css 绚丽Loading 】 000052 璇玑转轮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f…

实时数仓3.0DWD层

实时数仓3.0DWD层 DWD层设计要点&#xff1a;9.1 流量域未经加工的事务事实表9.1.1 主要任务9.1.2 思路9.1.3 图解9.1.4 代码 9.2 流量域独立访客事务事实表9.2.1 主要任务9.2.2 思路分析9.2.3 图解9.2.4 代码 9.3 流量域用户跳出事务事实表9.3.1 主要任务9.3.2 思路分析9.3.3 …

全面掌握 Jest:从零开始的测试指南(下篇)

在上一篇测试指南中&#xff0c;我们介绍了Jest 的背景、如何初始化项目、常用的匹配器语法以及钩子函数的使用。这一篇篇将继续深入探讨 Jest 的高级特性&#xff0c;包括 Mock 函数、异步请求的处理、Mock 请求的模拟、类的模拟以及定时器的模拟、snapshot 的使用。通过这些技…

办了房屋抵押经营贷,空壳公司不怕被查吗?续贷不上怎么办?

很多有房的朋友&#xff0c;想必都办理过抵押经营贷款。但是&#xff0c;当办完房屋抵押经营贷款之后&#xff0c;钱到手了&#xff0c;别光顾着乐呵&#xff0c;贷后管理可是门大学问&#xff0c;稍有不慎&#xff0c;麻烦就找上门了。咱得确保资金用得对路&#xff0c;征信亮…

windows 使用wsl安装docker

前言 很多情况下代码开发需要依赖 Linux 系统&#xff0c;比如安装 Docker 容器来实现代码隔离&#xff0c;然而问题是大部分同学的电脑都是 Windows 系统&#xff0c;这时就会出现大量报错&#xff0c;经历过的同学一定是边踩坑边落泪。 如何免费拥有一台 Linux 服务器呢&…

什么是即时通讯平台

在当今数字化时代&#xff0c;高效的沟通和协作是企业成功的关键。为了满足企业的沟通需求&#xff0c;即时通讯平台应运而生。WorkPlus作为一款企业级即时通讯平台&#xff0c;提供了丰富的功能和安全性&#xff0c;助力企业实现高效协作、数字化办公以及推动业务发展。本文将…

为什么直播要用RTMP?

为什么要选RTMP 直播使用RTMP&#xff08;Real-Time Messaging Protocol&#xff09;协议的原因主要有以下几点&#xff1a; 1. 低延迟特性 RTMP被设计为实时消息传递协议&#xff0c;通过优化传输机制&#xff0c;可以实现较低的传输延迟。这对于直播来说至关重要&#xff…

LeetCode_sql_day26(184,1549,1532,1831)

描述 184.部门工资最高的员工 表&#xff1a; Employee ----------------------- | 列名 | 类型 | ----------------------- | id | int | | name | varchar | | salary | int | | departmentId | int | -----------------…

22章 开发高效算法

1.编写一个程序&#xff0c;提示用户输入一个字符串&#xff0c;然后显示最大连续递增的有序子字符串。分析你的程序的时间复杂度。 import java.util.Scanner;public class Test {public static void main(String[] args) {System.out.println("请输入字符串&#xff1a…

这个公司可以做点什么呢?

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

国学盛典 致敬先贤 《老子与道德经》纪录片研讨会在北京善品堂国学馆圆满落幕

9月10日&#xff0c;《老子与道德经》纪录片研讨会在北京善品堂国学馆圆满落幕。中国著名表演艺术家、曾饰演央视86版电视剧《西游记》中“孙悟空”的六小龄童先生与两百余人传统文化传播者、践行者、爱好者齐聚一堂&#xff0c;共同交流。本次会议由中国文化促进会福文化工作委…

python-在PyCharm中使用PyQt5

文章目录 1. 安装 PyQt5 和QtTools2. QtDesigner 和 PyUIC 的环境配置2.1 在 PyCharm 添加 Create Tools2.2 添加 PyUIC 工具 3. 创建ui界面4. 使用python调用ui界面参考文献 1. 安装 PyQt5 和QtTools QT 是最强大的 GUI 库之一&#xff0c;PyQt5 是 Python 绑定 QT5 应用的框…

phpstudy 建站使用 php8版本打开 phpMyAdmin后台出现网页提示致命错误:(phpMyAdmin这是版本问题导致的)

报错提示&#xff1a; 解决方法&#xff1a;官网下载phpmyadmin 5.2.1版本。 下载地址&#xff1a;phpMyAdmin 将网站根目录phpMyAdmin4.8.5里面的文件换成 官网下载的5.2.1版本即可。 重启网站&#xff0c;打开phpMyAdmin后台即可&#xff08;若打不开更改 mysql密码即可&am…

传知代码-KAN卷积:医学图像分割新前沿

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 在本文中深入探讨KAN卷积在医学图像分割领域的创新应用&#xff0c;特别是通过引入Tokenized KAN Block&#xff08;Tok Kan&#xff09;这一突破性设计&#xff0c;将深度学习中的图像分割技术推向了新的高…