架构设计
负载均衡层设计方案之负载均衡技术总结篇
1、概述
通过前面文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路。虽然后面我们将转向“业务层”和“业务通信”层的介绍,但是对负载均衡层的介绍也不会停止。在后续的时间我们将穿插进行负载均衡层的新文章的发布,包括Nginx技术的再介绍、HaProxy、LVS新的使用场景等等。 这篇文章我们对前面的知识点进行总结,并有意进行一些扩展,以便于各位读者找到新的学习思路。
2、负载均衡层的核心思想 2-1、一致性哈希与Key的选取
我们详细介绍了一致性哈希算法。并且强调了一致性Hash算法是现代系统架构中的最关键算法之一,在分布式计算系统、分布式存储系统、数据分析等众多领域中广泛应用。针对我的博文,在负载均衡层、业务通信层、数据存储层都会有它的身影。 一致性算法的核心是:
1. 使用对象的某一个属性(这个属性可以是服务器的IP地址、开放端口 还可以是用户名、某种加密串。凡是你可以想到的有散列意义的属性),算出一个整数,让其分布在0 至 2的32次方 范围内。
2. 一台服务器的某个或者某一些属性当然也可以进行hash计算,并且根据计算分布在这个圆环上的某一个点,也就是图中圆环上的蓝色点。
3. 一个处理请求到来时,根据这个请求的某一个或者某一些属性进行hash计算,并且根据计算记过分布在这个圆环上的某一个点上。也就是上图圆环上的黄色点。
4. 我们约定落在某一个蓝点A左侧和蓝点B右侧的黄色点所代表的请求,都有蓝点A所代表的服务器进行处理,这样就完成解决了“谁来处理”的问题。在蓝色点稳定存在的前提下,来自于同一个Hash约定的请求所落在的位置都是一样的,这就保证了服务处理映射的稳定性。
5. 当某一个蓝色点由于某种原因下线,其所影响到的黄色点也是有限的。即下一次客户