一个故事带你搞懂负载均衡

242 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 1 天,点击查看活动详情

图片

今天二毛去附近的银行办卡,银行的人特别多,就走到了其中一条队伍去排队。

图片

图片

图片

图片

图片

图片

什么是负载均衡

是一种优化资源利用率技术,用来在多个计算机、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最大化吞吐率、最小化响应时间、同时避免过载的目的。

图片

图片

负载均衡的通俗解释与作用

日常生活中总会有一些拥挤的地方,比如地铁站、医院、火车站等。其实根据我们的经验,无论是挂号,还是排队入场,这些场所一般都会设置多个服务点或者入口的。

但是,在这些地方你总会发现,最近的入口会挤满人;而那些距离较远的服务点就宽松很多。而如果有人引导的话,实际情况就会好转,整个服务点都会均摊到部分压力,而不至于让某个服务点太忙,另一个服务点又太闲。

那么,在网络世界中,这些服务点就相当于服务器,而那个所谓的引导者就相当于负载均衡了。

一个集群式网站的建设。如果没有任何机制来疏导用户的话,完全随机或者就近原则的话,那么很容易导致某些服务器的流量很大,而另外一个服务器的 qps 很小。这不仅严重的浪费了资源,而且还会导致拉长用户访问网站的RT,影响用户的体验。

图片

可见,负载均衡充当了一个十分重要的角色。

图片

图片

图片

图片

负载均衡的分类

首先要明确一点,一台主机到另一台主机的流量是通过网络传输的,而负载均衡的作用就是在某个中间节点上,利用一定的算法平摊这些流量。也就是说要在网络传输过程中动手脚。

提到网络,就不得不提到我们熟知的OSI七层网络模型。事实上,负载均衡一般就是通过网络模型来划分的。

图片

负载均衡的种类大致有以下几种,最常用的是四层和七层负载均衡:

二层负载均衡

负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

四层负载均衡

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。常见的实现有 F5、LVS等。

七层负载均衡

七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用 http、dns 等。七层负载就可以基于这些协议来负载。常见的实现有 nginx、apache。

图片

图片

图片

图片

负载均衡算法

可以分为两类:静态负载均衡算法和动态负载均衡算法。

静态负载均衡算法包括:轮询,比率,优先权。

动态负载均衡算法包括: 最少连接数,最快响应速度,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式。

比如 nginx 中就提供了 **轮询、****weight、****ip_hash、url_hash、**fair 等负载均衡算法策略。

图片

图片

图片

图片

图片

图片

未完待续......

或许你们并没有搞懂什么是负载均衡,但是应该搞懂了另外一种更重要的东西,是什么呢?