负载均衡详解

负载均衡

常用负载均衡策略

1️⃣轮询
经典的负载均衡策略,早期应用广泛。

  • 原理:给每个请求标记一个序号,然后将请求依次派发到服务器节点中
  • 适用于集群中各个节点提供服务能力等同且无状态的场景。
  • 缺点:该策略将节点视为等同,与实际中复杂的环境不符。优化:加权轮询为轮询的一个改进策略,每个节点会有权重属性,但是因为权重的设置难以做到随实际情况变化,仍有一定的不足。

2️⃣随机

  • 原理: 与轮询相似,不需要对每个请求进行编号,每次随机取一个。
  • 同样,该策略也将后端的每个节点视为等同的。同样也有改进的加权随机的算法。

3️⃣最小响应时间

  • 概念: 通过记录每次请求所需的时间,得出平均的响应时间,然后选择最小的响应时间。
  • 该策略能较好地反应服务器的状态,但是由于是平均响应时间的关系,时间上有些滞后,无法满足快速响应的要求。因此在此基础之上,会有一些改进版本的策略,如只计算最近若干次的平均时间的策略等。

4️⃣最小并发数

  • 概念: 客户端的每一次请求在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮询或随机均衡算法,每一台服务器上的连接进程可能会产生较大的不同,并没有达到真正的负载均衡。
  • 概念:其策略是根据当前记录的时刻,选用当前正在处理的事务数量最少的节点。
  • 优点:能够快速地反应服务器的当前状况,合理地将负载分配均匀,适用于对当前系统负载较为敏感的场景

哈希

在后端节点有状态的情况下,需要使用哈希的方法进行负载均衡,此种情况下情况比较复杂,

软负载均衡

则是通过在服务器上安装的特定的负载均衡软件或是自带负载均衡模块完成对请求的分配派发。

软负载:顾名思义就是靠软件手段来实现的负载均衡。比如各种算法。软负载也通常被称为 4层或 7 层负载!

软负载方面的软件特别多,比如早期阿里章文嵩博士的 LVS,再比如 Nginx 的负载均衡等。通常软负载有这些大的分类技术,http重定向、DNS负载均衡、反向代理负载均衡、IP负载均衡(LVS-NAT)、直接路由(LVS-DR)、IP隧道(LVS-TUN)等技术。

在这里插入图片描述

硬负载均衡

硬负载效率比软负载高。

  • 原理是把目标 IP 地址改为后台服务器的 ip 地址。
  • 硬负载方面,通常有这些负载均衡设备。多链路负载均衡、防火墙负载均衡、服务器负载均衡等。

硬负载的效率非常高。这就好像中医看病一样,通过面相、心率、望闻问切就知道一个大概。软负载就好比,你说肚子疼,医生来就给你抽血化验、B 超、CT 等先搞一套,所以相当来说它效率低一些!

在这里插入图片描述

负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡针对本地范围的服务器群做负载均衡,全局负载均衡针对不同地理位置、不同网络结构的服务器群做负载均衡。

本地负载均衡

成本低、效率高

主要针对高并发带来的问题】

【负载均衡策略多】

【维护方便】

  • 本地负载均衡不用花高成本购买高性能服务器,利用现有设备资源即可,能有效解决高并发带来的问题

  • 主要处理数据流量过大、网络负荷过重的问题。

  • 拥有多种均衡策略把数据流量合理均衡的分配到各台服务器。

  • 需要在现在服务器上升级扩充,不需改变现有网络结构、停止现有服务,仅需要在服务群中简单地添加一台新服务器。

全局负载均衡

  • 主要解决用户通过一个域名或IP地址就能访问到离自己距离最近的服务器。获得最快的访问速度。
  • 在多区域都拥有自己的服务器站点,也适用于那些子公司站点分布广的大型公司通过企业内部网(Intranet)达到资源合理分配的需求。

特点:

  • 1、提高服务器响应速度,解决网络拥塞问题,达到高质量的网络访问效果。
  • 2、能够远距离为用户提供完全的透明服务,真正实现与地理位置无关性
  • 3、能够避免各种单点失效,既包括数据中心、服务器等的单点失效,也包括专线故障引起的单点失效。

均衡技术

基于DNS的负载均衡

由于在DNS服务器(域名服务器)中,可以为多个不同的地址配置相同的名字,最终查询这个名字的客户机将在解析这个名字时得到其中一个地址,所以这种代理方式是通过DNS服务中的随机名字解析域名和IP来实现负载均衡。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x3XJyTUt-1657029752952)(E:\Java资料\笔记整理\JavaUp\笔记整理\负载均衡.assets\image-20220619152720786.png)]

反向代理负载均衡(如Apache+JK2+Tomcat这种组合)

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KzNwaAR9-1657029752953)(E:\Java资料\笔记整理\JavaUp\笔记整理\负载均衡.assets\image-20220619152629142.png)]

  • 正向代理和代理服务器【客户直接上网访问并接收响应

正向代理即通常所说的代理,用于代表内部网络用户向Internet上的服务器(或称外部服务器,通常为Web服务器)发出连接请求,并接收响应结果,

执行该代理功能的服务器称为代理服务器。

使用代理服务器访问外部网络时,客户端必须在局域网设置中指明代理服务器的地址以及要代理的服务的端口号。

  • 反向代理和代理服务器【客户访问服务器,再由服务器转发请求给其他服务器

反向代理的方向与正向代理相反,指代表外部网络用户向内部服务器发出请求,即接收来自Internet上用户的连接请求,并将这些请求转发给内部网络上的服务器,然后将从内部服务器上得到的响应返回给Internet上请求连接的客户:

执行反向代理服务的服务器称为反向代理服务器

反向代理服务器对外部用户表现为一个服务器。

基于NAT(Network Address Translation)的负载均衡技术(如Linux VirtualServer,简称LVS)

该技术通过一个地址转换网关将每个外部连接均匀转换为不同的内部服务器地址,因此外部网络中的计算机就各自与自己转换得到的地址上的服务器进行通信,从而达到负载均衡的目的。

网络地址转换网关位于外部地址和内部地址之间,不仅可以实现当外部客户机访问转换网关的某一外部地址时可以转发到某一映射的内部的地址上,还可使内部地址的计算机能访问外部网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮卡丘不断更

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值