概念
负载:后端系统的承受能力;均衡:保证后端请求的平衡。
一种算法,在跨平台系统调用的时候,考虑到后端机器承载情况的前提下,保证请求分配的平衡和合理。
为什么需要(what?)
1、负载——当请求量过大,超过后端机器的承受能力时,有可能会导致某台机器宕机,同时也可能会引起连锁反应,导致服务器瘫痪。
2、均衡——合理利用资源,保证相应时间。
怎么做(how?)
1、负载算法
手工配置:根据各个机器的承受能力,固定宽度。多用于中小型系统,因为性能配置和承受能力都比较清楚。
动态调整:根据机器的运行状态和历史平均值进行对比,动态设定宽度。
2、均衡算法
A、随机算法
选取后端服务器的时候,采取随机的一个方法。
优缺点:均衡(从概率上来说)性,无状态性。
案例:最常用的方法。
B、轮训算法
预先设定一个数组,作为固定排序,按顺序选取后端服务器。
优缺点:均衡性,有状态性。
C、一致哈希算法
规定数据的范围,从0~2的32次方,首尾相连形成一个圆圈,以这个圆圈作为选取后端服务器的标准。使用hash算法计算并得到相应服务器的值,并标记在圆圈的某些点(Node-A,Node-B),而每一次请求也同样以这个hash算法计算得到相应的值,并标记在圆圈上的某些点(request-1,request-2),然后通过顺时针方向找到第一个服务器。
优缺点:无状态性,散列不变性,异常情况后可分散性。
案例:多用于cash缓存,将资源固定存储到某台服务器上。
D、主备算法
将请求尽量放到某台固定的服务器上,再提供一些服务器做为备份,如果存在问题,则切换到另外的某台服务器上。
案例:一些特殊的情况下,为了保证数据的时序性。——未搞懂,后续补充