简单了解负载均衡

在软件系统的架构设计中,对集群的负载均衡设计是优化性能的必不可少的环节。

什么是负载均衡

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

image-20180909151903292

常见处理方案

1. 基于DNS负载均衡

基于DNS实现负载均衡是最简单的方案,在DNS服务器上做简单配置即可。

image-20180909153324023

原理是当用户访问域名时,会先向DNS服务器申请解析域名对应的IP地址。这时我们可以让DNS服务器根据不同地理位置的用户返回不同的IP。比如南方的用户可以返回广州业务服务器的IP,北方用户可以返回北京服务器的IP。

这个方法的优势是配置简单,实现成本低;缺点是生效不及时,由于DNS会有多级缓存,所以IP变更不及时。

2. 基于硬件负载均衡

基于硬件的负载均衡就需要购买特定的硬件。优点是省事,性能强大,缺点是贵。

image-20180909153752527

3. 基于软件负载均衡

软件负载均衡指使用软件的方式来分发和均衡流量。实现方法分为基于7层协议和4层协议。

根据OSI模型的7个层级划分,基于第4层传输层来做流量分发的方案称为4层负载均衡,如LVS,基于第7层应用层做流量分发的称为7层负载均衡,如Ngnix。

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

基于软件的负载均衡有点在于便宜,在互联网公司中使用最多。

image-20180909153916057

常用的均衡算法

轮询策略

当用户请求来了之后,负载均衡器将请求轮流转发到后端不同的业务服务器上。这个策略在DNS方案中使用较多,无需关注后端服务的状态。

负载度策略

当负载均衡器往后端转发流量时,会先去评估每台服务器的负载压力情况,多发请求给压力较小的服务器。

这种方法比轮询更为科学,但对负载均衡器的要求较高,会增加负载均衡器的实现难度和维护成本。

响应策略

当用户请求过来时,负载均衡器会优先将请求转发给当前时刻响应速度最快的后端服务器。

这个方法不管服务器的负载情况和配置如何,只要响应最快,就把请求转发给它。这样对用户而言,体验最后,但是同样实现难度和维护成本较高。

哈希策略

将请求中的某个信息用hash计算,然后根据后端服务器台数取模,算出相同值的请求被转发到同一台服务器。

常见用法是对用户的IP或ID进行逐个策略,来自同一个IP的用户永远会被发送到同一个服务器上。

参考:

如何实现高性能负载均衡设计?