硕鼠下载器-微信聊天记录删了还能查出来吗

负载均衡器
2023年4月3日发(作者:钢筋符号输入)

负载均衡的常⽤算法

1、随机算法:

负载均衡⽅法随机的把负载分配到各个可⽤的服务器上,通过随机数⽣成算法选取⼀个服务器,然后把连接发送给它。同样⼀个请求⼀会落

到机器A,⼀会落到机器B上,Cache会被频繁淘汰,使得cache命中率低。

2、轮询算法:

轮询算法按顺序把每个新的连接请求分配给下⼀个服务器,最终把所有请求平分给所有的服务器。轮询算法在⼤多数情况下都⼯作的不错,

但是如果负载均衡的设备在处理速度、连接速度和内存等⽅⾯不是完全均等,那么效果就会不好。当然cache命中率也不⾼

3、加权轮询算法:

每个机器接受的连接数量是按权重⽐例分配的。这是对普通轮询算法的改进,⽐如你可以设定:第三台机器的处理能⼒是第⼀台机器的两

倍,那么负载均衡器会把两倍的连接数量分配给第3台机器。

4、动态轮询算法:

类似于加权轮询,但是,权重值基于对各个服务器的持续监控,并且不断更新。这是⼀个动态负载均衡算法,基于服务器的实时性能分析分

配连接,⽐如每个节点的当前连接数或者节点的最快响应时间等。

5、最快响应算法:

平衡器记录⾃⾝到每⼀个集群节点的⽹络响应时间,并将下⼀个到达的连接请求分配给响应时间最短的节点;

6、最少连接算法:

平衡器纪录⽬前所有活跃连接,把下⼀个新的请求发给当前含有最少连接数的节点。

7、哈希散列算法:

散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将⽹络请求发往集群节点,将具有相同源地址的数据包发给同

⼀服务器。以后对相同的请求,相同的服务器组,计算出来的hash结果相同,从⽽达到HASH分布的效果。

根据不同的均衡要求选择不同的均衡算法

当然:对于哈希散列算法我们

计算全部服务器的idx_key=hash(query_key+server_idx),其中计算得到idx_key最⼤的server_idx就是需要的idx。

假设开始3台后端服务器,请求⽤标志串req="abcd"来标志,服务器⽤S1,S2,S3来标志,那么,通过对req+Sx合并起来计算签名就可

以对每个服务器得到⼀个数值:

(req="abcd"+S1)=K1

(req="abcd"+S2)=K2

(req="abcd"+S3)=K3

计算的⽅法可以使⽤crc,也可以使⽤MD5,⽬的的得到⼀个*散列*的数字,这样在K1,K2,K3中必定有⼀个最⼤的数值,假设是K2,那么可

以将请求req扔给S2,这样,以后对相同的请求,相同的服务器组,计算出来的结果必定是K2最⼤,从⽽达到HASH分布的效果。

巧妙的地⽅在于,新增或者删除⼀台服务器的时候,不会引起已有服务器的cache⼤规模失效,假设新增⼀台服务器S4,那么对S1,S2,S3

计算的K值都完全相同,那么对S4可以计算得到⼀个新值K4,如果计算K的算法⾜够散列,那么原先计算到S1,S2,S3的请求,理论上都会

有1/4的请求新计算得到的K4⽐原先的K⼤,那么这1/4的请求会转移到S4,从⽽新增的S4服务器会负担1/4的请求,原先的S1,S2,S3也只会

负担原先的3/4。

cache命中率最⾼,并且新增和删除(考虑到服务器宕机的情况)服务器的影响最⼩

更多推荐

负载均衡器