一、什么是负载均衡?
负载均衡是一种计算机技术,它可以将用户请求或流量通过负载均衡器,按照某种负载均衡算法把流量均匀地分散到后端的多个服务器上,接收到请求的服务器可以独立地响应请求,以期望的规则分摊到多个操作单元上进行执行,达到负载分担、提高应用程序的可用性和可伸缩性、确保所有用户都能够在没有延迟或中断的情况下访问应用程序的目的。
二、实现方式
在分布式软件系统中,负载均衡器以软件的方式实现并通过各种策略和算法实现负载均衡调度。
负载均衡的实现方式分为以下几种:
1、软件负载均衡:易操作,便宜,灵活,可以根据业务特点进行选择,方便进行扩展和定制功能。
2、硬件负载均衡:功能强大,性能远超常见的软件负载均衡器,稳定性高,具备防火墙、防 DDoS 攻击等安全功能,以及支持 SNAT 功能。缺点是扩展性差,无法进行扩展和定制,调试和维护比较麻烦,需要专业人员。
3、DNS负载均衡:可以实现地理级别的全局负载均衡,实现就近访问,提高访问速度。这种方式一般是入口流量的基础负载均衡,下层会有更专业的负载均衡设备实现的负载架构。
4.服务器负载均衡:客户端发出的请求由服务端的负载均衡器接收,然后负载均衡器再按照某种策略选择一个服务实例进行转发。服务器负载均衡一般通过反向代理的方式进行:反向代理是一种位于用户和目标服务器之间的代理服务器,对于用户而言,反向代理服务器就相当于目标服务器,用户可以直接访问反向代理服务器来获得目标服务器的资源,而不需要知道目标服务器的地址或进行任何设定。
5.客户端负载均衡:每个客户端在发送服务请求时直接决定要访问的服务实例。服务端维护一个服务注册表,每个服务实例被创建时都会到服务注册表上进行注册,并在后续过程中通过心跳机制(定时向注册表发送心跳消息)维持联系。客户端一般在本地保存一份服务实例列表,通过查询服务注册表进行定时更新,同时在发现不可用的服务实例后将其移除。客户端发起请求时先从本地列表中查询当前可用的服务实例,然后根据某种负载均衡策略选择其中一个服务实例发送请求。