现在前沿技术领域一个很有突破口和争议性的领域就是分布式系统以及高并发的解决与处理。而解决高并发其中一个很有意思的方法就是负载均衡。
那么,究竟什么才是负载均衡呢?
首先,维基百科是这样说的:
负载平衡(英语:load balancing)是一种电子计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
这未免有些看起来复杂难以理解,但是道理还是没问题的。
简单来说负载平衡就是将网络分流到不同的服务器上,这里的服务器可以是一个pc或者任意受体,并且保证每一个受体(server,也叫做服务器)在没有过载的情况下实现总体速度最大化,达到最好的收益效果。
而一个load balancer,如图所示,就是一个节点上的切片,负责联络所有listener(也叫做受体)。
应当注意的是,load balancer也是有IP地址的,但是因为属性,所以是一个私有的(private)的IP地址。他的功能就是统筹规划,当一个server下线了他要负责让其他server保持工作的同时把这个下线的server的工作分配给其他的server;而当一个server上线了他要在保证速度和效率的前提下给他分配任务,让新上线的server在网络下和其他server一同配合工作。
负载均衡器的功能有很多,这里并不一一列举,最有意思的是他的防火墙属性,是针对自己的防火墙,由于不允许用户直接访问后台,所以指定的防火墙是由一系列规则组层的,然而对于负载均衡器自身来说,他就是自身的防火墙。
另一个值得一提的点是,虽然负载均衡有很多限制,比如通常只能应用于单一的本地网络, 但是这仍然是解决该并发问题最常用的手段之一,因为利大于弊:
负载均衡的优势是他可以减少停机时间,减少冗余并且可扩展,这导致了他的灵活性很高,同时还可以兼顾到效率层面的收益。由此可见火还是有火的理由。
而负载均衡的算法有很多种,比较常见的有:
-
Round Robin – 请求按顺序分布在服务器组中。
-
最少连接——一个新请求被发送到与客户端的当前连接最少的服务器。每个服务器的相对计算能力是根据哪一个具有最少的连接被确定的。
-
最少时间 – 将请求发送到由一个公式选择的服务器,该公式结合了 最快的响应时间和最少的活动连接。这个算法是 NGINX Plus 独有的。
这个算法的优势是把时间成本放在首位考虑因素,作为最大的factor影响算法的公式选择和参数;
但是相应的他的效率和最优解方面就会有所减少,并不能实现最优任务分配。
-
散列 - 根据发出人定义的密钥分发请求,例如客户端 IP 地址或 请求网址。 NGINX Plus 可以选择应用一致的hash来最小化重新分配 如果上游但是问题存在于如果上游服务器的集合发生变化,就会发生负载。
-
IP Hash – 客户端的 IP 地址用于确定哪个服务器接收请求。
-
Random with Two Choices – 随机选择两台服务器并将请求发送到 然后应用最少连接算法(或用于 NGINX Plus 最少时间算法,如果这样配置可增强最少时间算法的效率和灵活性)。
总的来说,负载均衡不仅适用于提高处理问题的灵活性,在故障转移方面也非常的好用,
在传统的解决方法中,如果将所有任务都发送到同一个后台进行处理解决,就会造成一个粘性会话,或者一个持续化的解决方案,这样的解决方法具有不稳定性,很容易就会因为后台服务器的故障导致前端用户的数据丢失,造成不可扭转的影响,抗风险能力很弱。
然而,在负载均衡中,由于负载均衡器的存在,如果有一个服务器下线,很快就可以进行实时监控并将这部分的工作转移到其他的服务器进行代偿。
而这就涉及到了冗余的概念,因此算法多采用一用一备的方案,所以如果一个server下线很快就会有替补。在面临风险问题的处理方法时,这样的一用一备的方案不仅更加高效,而且比传统的故障转移方法更加灵活,具有经济效益。
你还想知道什么,欢迎收藏点赞留言~下一期咱们安排起来!!