负载均衡
一台服务器的处理能力,主要受限于服务器自身的可扩展硬件能力。所以,在需要处理大量用户请求的时候,通常都会引入负载均衡器,将多台普通服务器组成一个系统,来完成高并发的请求处理任务。
最早的负载均衡技术是通过DNS来实现的,将多台服务器配置为相同的域名,使不同客户端在进行域名解析时,从这一组服务器中的请求随机分发到不同的服务器地址,从而达到负载均衡的目的。
但在使用DNS均衡负载时,由于DNS数据刷新的延迟问题,无法确保用户请求的完全均衡。而且,一旦其中某台服务器出现故障,即使修改了DNS配置,仍然需要等到新的配置生效后,故障服务器才不会被用户访问到。目前,DNS负载均衡仍在大量使用,但多用于实现“多地就近接入”的应用场景。
1996年之后,出现了新的网络负载均衡技术。通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台服务器虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到服务器池中。网络负载均衡会检查服务器池中后端服务器的健康状态,自动隔离异常状态的后端服务器,从而解决了单台后端服务器的单点问题,同时提高了应用的整体服务能力。
网络负载均衡主要有硬件与软件两种实现方式,主流负载均衡解决方案中,硬件厂商以F5为代表,软件主要为NGINX与LVS。但是,无论硬件或软件实现,都逃不出基于四层交互技术的“报文转发”或基于七层协议的“请求代理”这两种方式。 四层的转发模式通常性能会更好,但七层的代理模式可以根据更多的信息做到更智能地分发流量。一般大规模应用中,这两种方式会同时存在。