负载均衡及解决方案

article/2025/8/25 3:26:53

目录

 

一、什么是负载均衡?

二、负载均衡方案有几种?

1、基于DNS负载均衡

2、基于硬件负载均衡

3、基于软件负载均衡

三、常用的均衡算法有哪些?

1、轮询策略

2、负载度策略

3、响应策略

4、哈希策略


一、什么是负载均衡?

早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就算将性能优化得再好,也不能支撑这么大用户量的访问压力了,这个时候就需要使用多台机器,设计高性能的集群来应对。

那么,多台服务器是如何去均衡流量、如何组成高性能的集群的呢?

此时就需要请出 「负载均衡器」 入场了。

负载均衡(Load Balancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性。

(可以按照图中去理解,图片来源网络)
 

二、负载均衡方案有几种?

目前市面上最常见的负载均衡技术方案主要有三种:

  1.  基于DNS负载均衡
  2.  基于硬件负载均衡
  3.  基于软件负载均衡

三种方案各有优劣,DNS负载均衡可以实现在地域上的流量均衡,硬件负载均衡主要用于大型服务器集群中的负载需求,而软件负载均衡大多是基于机器层面的流量均衡。在实际场景中,这三种是可以组合在一起使用。下面来详细讲讲:

1、基于DNS负载均衡


这里写图片描述
(网络图片)

基于DNS来做负载均衡其实是一种最简单的实现方案,通过在DNS服务器上做一个简单配置即可。
其原理就是当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址,这个时候我们可以让DNS服务器根据不同地理位置的用户返回不同的IP。比如南方的用户就返回我们在广州业务服务器的IP,北方的用户来访问的话,我就返回北京业务服务器所在的IP。

在这个模式下,用户就相当于实现了按照「就近原则」将请求分流了,既减轻了单个集群的负载压力,也提升了用户的访问速度。

使用DNS做负载均衡的方案,天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。
但是也有一个明显的缺点是:当配置修改后,生效不及时。这个是由于DNS的特性导致的,DNS一般会有多级缓存,所以当我们修改了DNS配置之后,由于缓存的原因,会导致IP变更不及时,从而影响负载均衡的效果。

另外,使用DNS做负载均衡的话,大多是基于地域或者干脆直接做IP轮询,没有更高级的路由策略,所以这也是DNS方案的局限所在。

2、基于硬件负载均衡


这里写图片描述
(网络图片)

硬件的负载均衡那就比较牛逼了,比如大名鼎鼎的 F5 Network Big-IP,也就是我们常说的 F5,它是一个网络设备,你可以简单的理解成类似于网络交换机的东西,完全通过硬件来抗压力,性能是非常的好,每秒能处理的请求数达到百万级,即 几百万/秒 的负载,当然价格也就非常非常贵了,十几万到上百万人民币都有。

因为这类设备一般用在大型互联网公司的流量入口最前端,以及政府、国企等不缺钱企业会去使用。一般的中小公司是不舍得用的。

采用 F5 这类硬件做负载均衡的话,主要就是省心省事,买一台就搞定,性能强大,一般的业务不在话下。而且在负载均衡的算法方面还支持很多灵活的策略,同时还具有一些防火墙等安全功能。但是缺点也很明显,一个字:贵。

3、基于软件负载均衡


这里写图片描述
(网络图片)

软件负载均衡是指使用软件的方式来分发和均衡流量。软件负载均衡,分为7层协议 和 4层协议。
网络协议有七层,基于第四层传输层来做流量分发的方案称为4层负载均衡,例如 LVS,而基于第七层应用层来做流量分发的称为7层负载均衡,例如 Nginx。这两种在性能和灵活性上是有些区别的。

基于4层的负载均衡性能要高一些,一般能达到 几十万/秒 的处理量,而基于7层的负载均衡处理量一般只在 几万/秒 。

基于软件的负载均衡的特点也很明显,便宜。在正常的服务器上部署即可,无需额外采购,就是投入一点技术去优化优化即可,因此这种方式是互联网公司中用得最多的一种方式。


三、常用的均衡算法有哪些?

上面讲完了常见的负载均衡技术方案,那么接下来咱们看一下,在实际方案应用中,一般可以使用哪些均衡算法?

  1. 轮询策略
  2. 负载度策略
  3. 响应策略
  4. 哈希策略

下面来分别介绍一下这几种均衡算法/策略的特点:

1、轮询策略

轮询策略其实很好理解,就是当用户请求来了之后,「负载均衡器」将请求轮流的转发到后端不同的业务服务器上。这个策略在DNS方案中用的比较多,无需关注后端服务的状态,只药有请求,就往后端轮流转发,非常的简单、实用。

在实际应用中,轮询也会有多种方式,有按顺序轮询的、有随机轮询的、还有按照权重来轮询的。前两种比较好理解,第三种按照权重来轮询,是指给每台后端服务设定一个权重值,比如性能高的服务器权重高一些,性能低的服务器给的权重低一些,这样设置的话,分配流量的时候,给权重高的更多流量,可以充分的发挥出后端机器的性能。

2、负载度策略

负载度策略是指当「负载均衡器」往后端转发流量的时候,会先去评估后端每台服务器的负载压力情况,对于压力比较大的后端服务器转发的请求就少一些,对于压力比较小的后端服务器可以多转发一些请求给它。

这种方式就充分的结合了后端服务器的运行状态,来动态的分配流量了,比轮询的方式更为科学一些。

但是这种方式也带来了一些弊端,因为需要动态的评估后端服务器的负载压力,那这个「负载均衡器」除了转发请求以外,还要做很多额外的工作,比如采集 连接数、请求数、CPU负载指标、IO负载指标等等,通过对这些指标进行计算和对比,判断出哪一台后端服务器的负载压力较大。

因此这种方式带来了效果优势的同时,也增加了「负载均衡器」的实现难度和维护成本。

3、响应策略

响应策略是指,当用户请求过来的时候,「负载均衡器」会优先将请求转发给当前时刻响应最快的后端服务器。
也就是说,不管后端服务器负载高不高,也不管配置如何,只要觉得这个服务器在当前时刻能最快的响应用户的请求,那么就优先把请求转发给它,这样的话,对于用户而言,体验也最好。

那「负载均衡器」是怎么知道哪一台后端服务在当前时刻响应能力最佳呢?
这就需要「负载均衡器」不停的去统计每一台后端服务器对请求的处理速度了,比如一分钟统计一次,生成一个后端服务器处理速度的排行榜。然后「负载均衡器」根据这个排行榜去转发服务。

那么这里的问题就是统计的成本了,不停的做这些统计运算本身也会消耗一些性能,同时也会增加「负载均衡器」的实现难度和维护成本。

4、哈希策略

Hash策略也比较好理解,就是将请求中的某个信息进行hash计算,然后根据后端服务器台数取模,得到一个值,算出相同值的请求就被转发到同一台后端服务器中。

常见的用法是对用户的IP或者ID进行这个策略,然后「负载均衡器」就能保证同一个IP来源或者同一个用户永远会被送到同一个后端服务器上了,一般用于处理缓存、会话等功能的时候特别好用。


感觉@不止思考负载均衡方案那部分总结的挺好的

原文地址 https://blog.csdn.net/jsjwk/article/details/82466989


http://chatgpt.dhexx.cn/article/7BsqEO6b.shtml

相关文章

吃透这份Github点赞120k的Spring全家桶笔记Offer拿到手软

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包SpringMVC、SpringBoot、Spring Cloud、Spring Data等解决方案。 很多研发人员把spring看作心目中最好的java项目,没有之一。Spring系列包含非常多的项目&…

分布式事务及解决方案

1、分布式事务 分布式事务就是在一个交易中各个服务之间的相互调用必须要同时成功或者同时失败,保持一致性和可靠性。在单体项目架构中,在多数据源的情况下也会发生 分布式事务问题。本质上来说,分布式事务就是为了保证不同数据库的数据一致性…

负载均衡方案

负载均衡方案 1、负载均衡概念 一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务…

负载均衡的多种解决方案

以下为原文 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层…

信息熵笔记

观察两个事件同时发生时获得的信息量应该等于观察到事件各自发生时获得的信息之和? 两个事件的信息量之和等于两个事件和的信息量? 两个随机变量熵的和大于两个随机变量和的熵 图片引自:https://blog.csdn.net/luoxuexiong/article/details/…

一文弄懂信息熵

引言 今天我们来探讨一下信息熵是怎么来的。 信息熵 信息的价值在于消除事件的不确定性,那事件的不确定性要怎么度量呢?答案就是信息熵(information entropy)。 比如你告诉别人你中了500万彩票,别人会大吃一惊,因为他被消除了…

信息熵 entropy

熵 最早是由热力学定义的一个函数,是普朗克来中国讲学的时候引入的。英文是“entropy”这个字,中文词汇中没有相关的字眼。当时是一个有名的姓胡的学者作为普朗克的翻译。因为这个熵“S”是定义为热量Q与温度的比值,所以当时他翻译是立刻创造…

信息熵学习笔记

简介 在信息论中,熵(entropy)是接收的每条消息中包含的信息的平均量,又被称为信息熵、信源熵、平均自信息量。 熵最好理解为不确定性的量度而不是确定性的量度,因为越随机的信源的熵越大。 比较不可能发生的事情&…

信息熵到底是什么

信息是我们一直在谈论的东西,但信息这个概念本身依然比较抽象。在百度百科中的定义:信息,泛指人类社会传播的一切内容,指音讯、消息、通信系统传输和处理的对象。 但信息可不可以被量化,怎样量化?答案当然…

什么是信息熵

熵 当一件事情(宏观态)有多种可能情况(微观态)时,这件事情(宏观态)对某人(观察者)而言具体是哪种情况(微观态)的不确定性叫做熵(entropy&#xff…

信息熵是什么

信息熵是什么 通过前两节的学习,我们对于决策树算法有了大体的认识,本节我们将从数学角度解析如何选择合适的“特征做为判别条件”,这里需要重点掌握“信息熵”的相关知识。 信息熵这一概念由克劳德香农于1948 年提出。香农是美国著名的数学…

单选按钮html图片,js实现的 图片单选按钮效果

【实例简介】用js实现的radio图片选择按钮效果。 【实例截图】 【核心代码】 用JS实现的radio图片选择按钮效果-脚本之家 .lanrentuku img{border:1px solid #008800;} function myFun(sId) { var oImg document.getElementsByTagName(img); for (var i 0; i < oImg.lengt…

html自定义单选按钮,美化表单——自定义单选按钮和复选按钮

大家都知道&#xff0c;在Web的Form中美化是最头痛的&#xff0c;尤其是表单中的“input[typecheckbox]”、“input[type"radio"]”、“input[typefile]”和select这些元素我们单单只使用CSS是无法匹配设计图的&#xff0c;像背景颜色或者背景图片&#xff0c;甚至说…

Android开发单选按钮功能,android实现单选按钮功能

在我们平时在注册个人信息的时候,经常会让我们选择是男生还是女生,那么这个单选框在Android中是怎么实现的呢?现在我们就来学习一下吧 首先我们要明白实现这样一个效果需要哪几部? 1、在layout布局文件中建立一个文件,我起的名字为activity_radio.xml 代码为: android:la…

单选按钮RadioButton

效果示例&#xff1a; MRadioButton.h //******************************************************** /// brief 自定义单选按钮 /// author y974183789gmail.com /// date 2021/9/18 /// note 支持自定义设置单选指示器位置 /// version 1.0.0 //***************************…

单选按钮(RadioButton)与 复选框(CheckBox)的功能与 用法

按照惯例&#xff0c;先看看两者的区别&#xff1a; 顾名思义&#xff0c;单选俺就就是只能选中一项的&#xff0c;而复选框是可以多选的。 一般来说&#xff0c;单选按钮是用于只有唯一答案的问题的答案选项中&#xff0c;而复选框用于一些可以多选的问题的答案中。 下面看看…

Android——单选多选按钮的使用详解

一&#xff1a;单选按钮 单选按钮类&#xff1a;RadioButton android&#xff1a;checked"true"设置默认选中 单选按钮控件通常与RadioGroup搭配使用。 RadioGroup是LinearLayout的子类&#xff0c;用于将多个单选按钮组合为一组。 同一按钮组内的单选…

Android 之 RadioButton (单选按钮) Checkbox (复选框)

本节引言&#xff1a; 本节给大家带来的是Andoird基本UI控件中的RadioButton和Checkbox; 先说下本节要讲解的内容是&#xff1a;RadioButton和Checkbox的1.基本用法 2.事件处理&#xff1b; 3.自定义点击效果&#xff1b; 4.改变文字与选择框的相对位置&#xff1b; 5.修改文字…

FTP服务器-vsftpd

FTP服务基础 FTP&#xff08;File Transfer Protocol,文件传输协议&#xff09;是典型的C/S结构的应用层协议&#xff0c;需要由服务端软件、客户端软件两个部分共同实现文件传输功能。 FTP连接及传输模式 FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。 20端口用…

ftpvsftpd服务

一. ftp ftp即文件传输,它是INTERNET上仍然常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器传输的简单方法,FTP服务器包的名称为vsftpd 二. 部署ftp服务 1. 安装ftp yum install -y vsftpd #安装vsftpd软…