负载均衡概念
本人主要从事负载均衡相关的工作,即LB load balance;lb来自于百度百科的解释如下:
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
百科解释的太官方了,其实负载均衡很简单,它本质是一层代理(可能做到网络不同层次的代理),也就是说在正常的C/S模型中,在客户端和服务端之间加一层转发代理,而具体的负载均衡实现就是在转发代理这一层实现的,原理图如下:
我简单解释一下上图,左边三台电脑指多个客户端,右边三个机箱指多个服务器,负载均衡设备就是我上边说的转发代理层(图片画的是一个反向代理);当客户端发一个请求,经过公网到达lb,lb利用不同的规则将客户端的请求转发给后台某一个服务器,或者直接丢掉这个请求,后台服务收到这个请求后,经过自己的处理逻辑,将处理应答返回给lb,lb再将这个应答返回个客户端,lb对于服务端和客户端都是透明的,用户不会感知到LB的存在。
lb最早应用到DNS上的,后来慢慢地应用到各个服务上了。
lb的好处
为什么要在客户端和服务端之间增加一层lb?这样会不会增加网络延迟?我的理解是这样会增加一定的网络延迟,但是这个延迟小到可以忽略,所以我们不必考虑网络延迟。总的来说,lb利大于弊,我大概总结了lb的几个好处:
1、lb具有高性能、高负载的特性
lb的高性能和高负载是对于后台服务来说的,他可以提高后台服务的高负载能力,尤其现在高流量时代,负载均衡尤为重要。lb会利用一些规则将客户端请求均匀地转发给后台服务,尽可能地使后台服务均匀地处理客户端的请求。这样会极大地提高后台服务的负载能力,现在很多大流量的应用都会有专门的LB。
2、lb具有极高的开发效率
在传统应用里,负载均衡可能和后台应用做到一起,这样后台开发人员不仅要考虑具体的功能实现,还要考虑后台服务的性能问题、负载问题,这样会极大地影响后台开发人员的效率;当把后台服务的负载问题交给其他服务或团队处理时,对于后台开发人员就负责后台功能实现即可,开发效率也就提高了。
3、lb具有极高的兼容性
lb会将请求转发给后台服务,这里的后台服务可以是web服务,DNS服务,FTP服务等,它基本上可以兼容后台大多数服务,比如很多后台服务都是基于java开发的,Tomcat是java开发最常用的web服务器,lb支持后台用Tomcat服务器。
lb的实现
lb的实现有很多种,比如说基于mac地址、基于ip地址、基于端口号、基于应用;最常用的lb有四层LB和七层LB。
四层LB是基于ip + 端口号实现的,典型的应用有LVS,它已经内置到Linux内核中,LVS是中国最早一批开源软件中的一个,感兴趣的同学可以自己看一下源码,代码量并不算太多。
七层LB是基于应用实现的,典型应用有Haproxy、Nginx等;当然nginx也可以作为一个web服务器,并不仅仅做一个反向代理(负载均衡);在负载均衡方面,Haproxy和Nginx在功能上很像,但是nginx更加友好,nginx不仅支持自己本身的功能外,还支持第三方模块接入(实现开发人员自定义功能);关于nginx的功能说明,大家可以在官网进行查看,官网的可读性、学习性比较强,当然也可以看我以后的分享~
最后,祝大家在2018年所有愿望都能实现!
领取专属 10元无门槛券
私享最新 技术干货