作用
对系统的高可用,网络压力的缓解,处理能力扩容的重要手段之一。
服务器负载
我们通常所说的负载是指:服务器负载
软硬件负载
服务器负载又分为:软件负载--硬件负载
软件负载:通过在服务器上安装一些具有负载功能或模块的软件来完成分发工作,如Nginx
硬件负载:通过在服务器节点之间安装专门用于负载的设备,如F5
架构
不论是软件负载还是硬件负载,主要是服务器负载都能以类似下图的方式的架构搭建:
硬件负载的设备,软件负载的软件模块都会维护一个下挂可用的服务端清单;通过心跳检测来剔除故障的服务端节点,来保证清单中都是可以正常访问的服务端节点;当服务端发送请求到负载设备时,该设备会以某种算法(如:线性轮询,按权重负载,按流量负载等)从服务端清单中取出一台服务端的地址,然后进行转发。
客户端负载
与服务器负载最大不同就是服务清单所提供的位置。在客户端负载中,所有客户端节点都维护着自己要访问的服务端清单,而这些服务端清单来自于服务注册中心(如:Eureka)。客户端的负载也需要心跳去维护服务端清单的健康性,只是需要与服务注册中心配合完成。