视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

最全负载均衡:算法、实现、亿级负载解决方案详解

  • 课程笔记
  • 问答交流

一台服务器的处理能力,主要受限于服务器自身的可扩展硬件能力。

所以,在需要处理大量用户请求的时候,通常都会引入负载均衡器,将多台普通服务器组成一个系统,来完成高并发的请求处理任务。

为了助大家掌握好负载均衡,这节课我会重点讲解以下5点:

1.负载均衡的作用

2.负载均衡的算法

3.负载均衡的实现

4.负载均衡的方案

5.亿级负载怎么做

负载均衡的作用

1.提高吞吐量

解决并发压力,提高应用处理性能(增加吞吐量)。

2.实现高可用

提供供故障转移,实现高可用。

3.扩展性

通过添加或减少服务器数量,提供网站伸缩性(扩展性)。

4.安全防护

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen
负载均衡设备上做一些过滤,黑白名单等处理。

负载均衡的算法

1.轮循

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen

轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
适合场景:适合于应用服务器硬件都相同的情况。

2.加权轮循

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen
在轮询的基础上根据硬件配置不同,按权重分发到不同的服务器。
适合场景:跟配置高、负载低的机器分配更高的权重,使其能处理更多的请求,而性能低、负载高的机器,配置较低的权重,让其处理较少的请求。

3.随机

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen
通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。

随着调用量的增大,客户端的请求可以被均匀地分派到所有的后端服务器上,其实际效果越来越接近于平均分配流量到后台的每一台服务器,也就是轮询法的效果。

4.最少连接

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen
记录每个服务器正在处理的请求数,把新的请求分发到最少连接的服务器上,因为要维护内部状态不推荐。

5.源地址散列

最全负载均衡:算法、实现、亿级负载解决方案详解-mikechen
根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。

适合场景:根据请求的来源IP进行hash计算,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

负载均衡的实现

 

评论交流
  1. mikechen

    ?good,我再补充两点:
    1.最核心的主要在于使用场景不一样,比如:nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,功能更强大。
    2.LVS(四层路由设备),主要做转发,比nginx的七层高效。
    3.网络一般千万级别挂nginx就可以,流量再大可以考虑LVS+Nginx一起来结合使用。

  2. 路正银

    nginx采用的是异步转发,如果一个服务器请求失败,立即切换到其他服务器,可以最大程度的提高系统的请求成功率,但可能会有流量瓶颈。
    lvs采用的是同步请求转发的策略,lvs服务器收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。
    所有的请求流量和响应流量都会经过nginx;lvs是仅请求流量经过,响应流量是由后端服务器的网络返回。后端的服务器规模庞大的话,nginx的网络带宽就成了一个巨大的瓶颈。但是仅仅使用lvs作为负载均衡的话,一旦后端接收到请求的应用服务器出了问题,那么这次请求就失败了。
    如果在lvs的后端再添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。