大型网站架构演变之9大阶段 什么是大型网站( 二 )

4、IP层负载均衡

在请求到达负载均衡器后,负载均衡器通过修改请求的目的IP地址,从而实现请求的转发,做到负载均衡 。
  • 优点:性能更好;
  • 缺点:负载均衡器的宽带成为瓶颈 。
5、数据链路层负载均衡
在请求到达负载均衡器后,负载均衡器通过修改请求的MAC地址,从而做到负载均衡,与IP负载均衡不一样的是,当请求访问完服务器之后,直接返回客户 。而无需再经过负载均衡器 。
2、集群调度转发算法
1、rr轮询调度算法
顾名思义,轮询分发请求 。
  • 优点:实现简单
  • 缺点:不考虑每台服务器的处理能力
2、wrr加权调度算法
我们给每个服务器设置权值Weight,负载均衡调度器根据权值调度服务器,服务器被调用的次数跟权值成正比 。
  • 优点:考虑了服务器处理能力的不同
3、sh原地址散列算法
提取用户IP,根据散列函数得出一个key,再根据静态映射表,查处对应的value,即目标服务器IP 。过目标机器超负荷,则返回空 。
  • 优点:实现同一个用户访问同一个服务器 。
4、dh目标地址散列算法
原理同上,只是现在提取的是目标地址的IP来做哈希 。
  • 优点:实现同一个用户访问同一个服务器 。
5、lc最少连接算法
优先把请求转发给连接数少的服务器 。
  • 优点:使得集群中各个服务器的负载更加均匀 。
6、wlc加权最少连接算法
【大型网站架构演变之9大阶段 什么是大型网站】在lc的基础上,为每台服务器加上权值 。算法为:(活动连接数 * 256 + 非活动连接数) ÷ 权重,计算出来的值小的服务器优先被选择 。
  • 优点:可以根据服务器的能力分配请求 。
7、sed最短期望延迟算法
其实sed跟wlc类似,区别是不考虑非活动连接数 。算法为:(活动连接数 +1 ) * 256 ÷ 权重,同样计算出来的值小的服务器优先被选择 。
8、nq永不排队算法
改进的sed算法 。我们想一下什么情况下才能“永不排队”,那就是服务器的连接数为0的时候,那么假如有服务器连接数为0,均衡器直接把请求转发给它,无需经过sed的计算 。
9、LBLC基于局部性最少连接算法
负载均衡器根据请求的目的IP地址,找出该IP地址最近被使用的服务器,把请求转发之 。若该服务器超载,最采用最少连接数算法 。
10、LBLCR带复制的基于局部性最少连接算法
负载均衡器根据请求的目的IP地址,找出该IP地址最近使用的“服务器组”,注意,并不是具体某个服务器,然后采用最少连接数从该组中挑出具体的某台服务器出来,把请求转发之 。若该服务器超载,那么根据最少连接数算法,在集群的非本服务器组的服务器中,找出一台服务器出来,加入本服务器组,然后把请求转发 。
3、集群请求返回模式问题
1、NAT
负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求返回给均衡器,均衡器再重新返回给用户 。
2、DR
负载均衡器接收用户的请求,转发给具体服务器,服务器出来玩请求后直接返回给用户 。需要系统支持IP Tunneling协议,难以跨平台 。
3、TUN
同上,但无需IP Tunneling协议,跨平台性好,大部分系统都可以支持 。

推荐阅读