首页 > 其他分享 >负载均衡:从理论到实践 ---day04

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

时间:2024-09-14 14:48:52浏览次数:15  
标签:负载 请求 day04 --- 均衡 均衡器 服务器 eureka

负载均衡

负载均衡

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应用程序中的购物车功能。通过会话保持,可以确保用户的会话数据不会丢失,并且能够提供一致的服务体验。

标签:负载,请求,day04,---,均衡,均衡器,服务器,eureka
From: https://blog.csdn.net/m0_67187271/article/details/142071549

相关文章

  • 验证码图片生成 hutool-captcha
    一、使用的依赖此处需要引入的依赖hutool-captcha:<!--获取图形验证码--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId><version>5.8.18</version></dependency>注:hutool-captcha已经包含......
  • 第134期 FGVC-Aircraft数据集
    引言亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。FGVC-Aircraft数据集:飞机识别的新篇章在人工智能和计算机视觉的广阔天地中,细粒度视......
  • 工业智能网关如何助力企业实现生产流程优化-天拓四方
    在数字化转型的浪潮中,工业智能网关作为连接物理世界与数字世界的桥梁,正逐步成为智能制造领域的核心组件。本文将通过一个实际使用案例,深入剖析工业智能网关如何助力企业实现生产流程的优化、数据的高效采集与分析,以及智能化决策的落地,展现其在智能制造中的独特价值。一、案例背景 ......
  • 进程间通信-管道
    管道管道的由来:不同进程对于同一文件的读写时,进程一对文件读的时候,进程二需要等到进程一读完关闭文件,进程二再打开进行相应的操作;而管道却可以实现多个进程对同一文件边读边写;无名管道PIPE特征没有名字,无法使用open()(可以使用read\write)只能用于亲缘进程(父子进程、兄弟进......
  • AI跟踪报道第56期-新加坡内哥谈技术-本周AI新闻: 划时代 Open AI 新模型系统2思维推理
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • Linux内核开发环境-代码编译
    建议点击这里查看个人主页上的最新原文作者:陈孝松主页:chenxiaosong.com哔哩哔哩:陈孝松课程:chenxiaosong.com/courses博客:chenxiaosong.com/blog贡献:chenxiaosong.com/contributions邮箱:[email protected]交流群:544216206,点击查看群介绍点......
  • Spark-ShuffleWriter-BypassMergeSortShuffleWriter
    一、上下文《Spark-ShuffleWriter》中对ShuffleWriter的获取、分类和写入做了简单的分析,下面我们对其中的BypassMergeSortShuffleWriter做更详细的学习二、创建ShuffleMapOutputWriterShuffleMapOutputWritermapOutputWriter=shuffleExecutorComponents.createMapO......
  • GEE :利用MODIS土地分类数据监测指定区域2001-2024年农作物的时序面积
    目录简介数据函数ee.Image.pixelArea()Noarguments.Returns: Image代码结果简介利用MODIS土地分类数据监测指定区域2001-2024年农作物的时序面积数据MODIS/061/MCD12Q1是一个由美国国家航空航天局(NASA)和美国地质调查局(USGS)联合开发的遥感数据产品。它是MODIS(M......
  • Linux基础入门 --10 DAY
    文本常见处理工具文件内容查看命令    cat    格式:cat[OPTION]...[FILE]...    常见选项:    -E:显示行结束符    -A:显示所有控制符    -n:对显示出的每一行进行编号    -b:对非空行进行编号    -s......
  • GEE 案例:利用ECMWF数据进行1950-2024年长时序气温(平均值和标准差)监测和图表绘制
    目录简介数据函数propertyNames()Arguments:Returns: Listexpression(expression, map)Arguments:Returns: Image代码结果简介利用ECMWF数据进行1950-2024年长时序气温监测和图表绘制数据ECMWF(欧洲中期天气预报中心)的ERA5_LAND(第五代地表分析数据集)是一种......