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

负载均衡

  • 负载均衡
    • 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.xdnf.cn/news/1534405.html

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

相关文章

网络安全 DVWA通关指南 DVWA SQL Injection (Blind SQL盲注)

DVWA SQL Injection (Blind) 文章目录 DVWA SQL Injection (Blind)Low布尔盲注时间盲注sqlmap MediumHighImpossible 参考文献 WEB 安全靶场通关指南 Low 0、分析网页源代码 <?phpif( isset( $_GET[ Submit ] ) ) {// Get input$id $_GET[ id ];// Check database$geti…

鸿蒙HarmonyOS开发:一次开发,多端部署(界面级)天气应用案例

文章目录 一、布局简介二、典型布局场景三、侧边栏 SideBarContainer1、子组件2、属性3、事件 四、案例 天气应用1、UX设计2、实现分析3、主页整体实现4、具体代码 五、运行效果 一、布局简介 布局可以分为自适应布局和响应式布局&#xff0c;二者的介绍如下表所示。 名称简介…

DSLogic 逻辑分析仪的使用-I2C协议

一、I2C IIC-BUS&#xff08;Inter-IntegratedCircuit Bus&#xff09;最早是由PHilip半导体&#xff08;现在被NXP收购&#xff09;于1982年开发。 主要是用来方便微控制器与外围器件的数据传输。 它是一种半双工&#xff0c;由SDA&#xff08;数据&#xff09;和SCL&#xf…

MicroPython 片上psrom的支持,并将多个bin合成为一个bin

前两天在github上下载的MicroPython 版本1.20.0&#xff0c;怎么配置都无法开启片上psrom的支持&#xff0c;折腾了一周&#xff0c;都自我怀疑了&#xff0c;最后更新版本为1.23.0一编译直接就过了。。。下面记录下过的&#xff0c;过程&#xff0c;这边使用的是四线SPI的片上…

我平时是怎么找客户的?今天我的实战技巧,分享给大家

我常用的几个方法 1、利用WhatsApp&#xff0c;找客户的号码&#xff0c;去进行营销 学会这个方法&#xff0c;WhatsApp账号都能被你找到http://mp.weixin.qq.com/s?__bizMzg2MTcxNzAwMg&mid2247498845&idx1&sn039a87d60094cf6c166e2cf5e1f94a69&chksmce106…

【黑神话】无脑过大头怪(幽魂)教程,手残也能打过关!

在《黑神话悟空》这款扣人心弦的动作角色扮演游戏中&#xff0c;玩家将面对众多考验操作与策略的Boss战。其中&#xff0c;大头幽魂作为玩家早期就会遇到的挑战之一&#xff0c;其独特的战斗机制和技能组合&#xff0c;对新手玩家而言无疑是一次不小的考验。今天&#xff0c;就…

【附源码】用Python开发一个音乐下载工具,并打包EXE文件,所有音乐都能搜索下载!

现在听个歌&#xff0c;不是要这就是要那&#xff0c;乱七八糟的&#xff0c;下软件都下不赢。 于是决定加班熬夜来做一个&#xff0c;想怎么听就怎么听&#xff0c;大家自己看到就好&#xff0c;悄悄用&#xff0c;别告诉别人哈~ 好了不闲聊&#xff0c;开整&#xff01; 首先…

Element-ui el-table 全局表格排序

实现效果如下&#xff1a; 一、当页数据排序 如果只想要当前页面排序&#xff0c;只会涉及到前端&#xff0c;只需在<el-table-column>标签上添加 :sortable"true"即可 二、自定义排序 如果想要全局排序&#xff0c;需要自定义排序函数&#xff0c;请求后台排…

如何进行大模型训练和微调?(实战)

1、在项目中&#xff0c;如果prompt和function calling足够好&#xff0c;尽量不要微调&#xff0c;节约成本。 以下是针对function calling的slot&#xff0c;评估准确率&#xff08;识别准确度&#xff09;、召回率&#xff08;全面率&#xff09;&#xff0c;F1值。 从中可以…

System.out源码解读——err 和 out 一起用导致的顺序异常Bug

前言 笔者在写一个小 Demo 的过程中&#xff0c;发现了一个奇怪的问题。问题如下&#xff1a; // 当 flagtrue 时打印 a1 &#xff1b;当 flagfalse 时打印 a2。 public static void main(String[] args) {boolean flag false;for (int i 0; i < 10; i) {if (flag) {Sys…

基于python的宠物信息交流系统---附源码74885

摘 要 在当今社会&#xff0c;随着人们生活质量的提高和对精神健康的追求&#xff0c;宠物已经成为我们生活中不可或缺的伙伴。与家中宠物朝夕相处&#xff0c;我们与宠物之间建立了深厚的情感纽带。然而&#xff0c;宠物也有可能生病&#xff0c;需要接受医疗护理。与人类一样…

如何利用Samba跨平台分享Ubuntu文件夹

1.安装Samba 终端输入sudo apt install samba 2.配置Samba 终端输入sudo vim /etc/samba/smb.conf 打开配置文件 滑动文件到最底下 输入以下内容 [Share] # 要共享的文件夹路径 path /home/xxx/sambashare read only no browsable yes编辑完成后按一下Esc按键后输入:wq回…

动不动就下跪的三星,离开天津了

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 三星辉煌岁月已过&#xff0c;万事凋零!如果说IBM、惠普、戴尔、苹果、富士康的离开有点惋惜的话&#xff0c;那三星的离开就是“活该”了。 成立于1993年的天津三星电子有限公司与2024年9月6日注销了&#xff0…

基于JavaWeb开发的java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于JavaWeb开发的java ssm springbootVUE疫情防疫系统系统前后端分离设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取…

MySQL字符集的转换

背景介绍 在使用MySQL过程中&#xff0c;如果字符集配置不当&#xff0c;可能会出现插入失败、数据乱码、 索引失效、数据丢失、查询不到期望结果等一系列使用异常的情况。因此&#xff0c;熟练掌握MySQL字符集和比较规则的配置方法&#xff0c;并在此基础上了解MySQL字符集与…

AMD CMD UMD CommonJs ESM 的历史和区别

这几个东西都是用于定义模块规范的。有些资料会提及到这些概念&#xff0c;不理清楚非常容易困惑。 ESM&#xff08;ES Module&#xff09; 这个实际上我们是最熟悉的&#xff0c;就是ES6的模块功能。出的最晚&#xff0c;因为是官方出品&#xff0c;所以大势所趋&#xff0c…

股价跌破1美元!这家激光雷达上市公司被沃尔沃「拖进」ICU

作为目前前装上车成本最高的传感器之一&#xff0c;绝大部分激光雷达初创公司的表现&#xff0c;令人沮丧。“很多时候&#xff0c;前方似乎有一个美好的未来&#xff0c;但事情并不总是按照预期发展。” 比如&#xff0c;作为曾经美股市值最高&#xff08;曾经巅峰期高达120亿…

【kafka-02】kafka集群搭建

Kafka系列整体栏目 内容链接地址【一】afka安装和基本核心概念https://zhenghuisheng.blog.csdn.net/article/details/142213307【二】kafka集群搭建https://zhenghuisheng.blog.csdn.net/article/details/142253288 kafka集群搭建 一&#xff0c;kafka集群搭建1&#xff0c;ka…

C++——深部解析哈希

好久不见给大家分享一张图片吧 目录 前言 二、库文件 1、哈希冲突 2 哈希函数 3、闭散列 三 、闭散列的实现和底层逻辑 1、哈希表&#xff08;闭散列&#xff09;的定义 2、哈希表&#xff08;闭散列&#xff09;的插入 3、哈希表&#xff08;闭散列&#xff09;的查找 4.哈希表…

灵雀云DevOps:加速应用交付,点燃业务创新引擎

导语 近日&#xff0c;国际知名咨询机构Gartner发布了2024年度DevOps平台魔力象限报告&#xff08;Gartner Magic Quadrant for DevOps Platforms&#xff09;&#xff0c;为信息化决策者在技术战略层面提供了选型和评估DevOps平台供应商的全面视角。报告中&#xff0c;中国云…