分布式算法-一致性hash
大家在工作中多少都遇到过困惑,当单机性能达到瓶颈时如何可以无状态的进行水平扩展横向扩展?那么这个时候就涉及到多机器、多服务如何做sharding?
一丶分布式算法
1、hash算法
典型求余 对应机器编号0-N。i = (hash() mod N)。那么这个算法存在典型问题就是,需要提前预知服务规模、用户规模。并且如果其中某一个节点宕机则影响全量的缓存数据,此场景同增加、删除机器。那么这种问题在系统架构中是坚决不能出现的,影响范围太大。风险性极高。
2、轮询算法
根据已有机器数量将请求分发到同一服务提供方的不同服务器上进行处理。参考Nginx 负载均衡
3、加权法
根据已有规则(一般配合轮询算法一起使用),设置每台机器/服务的权重。权重比例为提供服务比例。
4、响应速度算法(Response Time)