没有合适的资源?快使用搜索试试~ 我知道了~
首页揭秘阿里分布式:起源、发展与解决之道
"《阿里巴巴分布式核心原理解析》一文深入探讨了分布式系统的发展历程和其背后的驱动力。文章首先从单机模式或“单兵作战”说起,介绍了1946年ENIAC这样的早期计算机,其强大的处理能力标志着单体架构的诞生。在单机模式下,所有应用程序和数据集中在一台计算机,虽然便于维护,但存在性能受限和单点失效的风险,因为硬件性能是制约其扩展性的瓶颈。 作者指出,随着技术的发展,特别是单机模式的局限性显现,人们开始寻求更高效的计算方式,这就是并行计算和数据并行(或数据分布式)模式的出现。这种模式通过将数据拆分并分配到多台计算机上进行处理,利用多台机器的并行计算能力,极大地提高了处理能力和系统的可用性。每台计算机执行相同的程序,但处理不同的数据部分,这样就避免了单点故障可能导致的整体系统崩溃。 并行计算的核心原理在于任务的分解和数据的分布,而非单一计算机承担所有任务。这种方式有效地解决了单机模式的性能瓶颈问题,同时也降低了系统对单一组件的依赖,增强了系统的鲁棒性和可扩展性。 然而,实现并行计算并非易事,需要解决诸如数据一致性、通信开销、负载均衡等问题。阿里巴巴在分布式系统的设计与实践中,必然也面临着这些挑战,可能采用了诸如分布式缓存、分布式数据库、消息队列等技术来支持大规模并发和高可用性。 总结来说,从单机模式到分布式模式的发展,实际上是技术进步和业务需求推动的结果。理解这一演变有助于我们更好地掌握分布式系统的概念,以及如何在实际项目中选择和应用适合的分布式架构。阿里巴巴的分布式核心原理解析,为我们提供了宝贵的学习材料,揭示了分布式系统在大型互联网企业中的关键作用和复杂技术细节。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/15930190/bg10.jpg)
如图所示,程序 1、2、3、4 为普通运行程序,另一个程序为协调者。当程序 2 和程序 4
需要使用临界资源时,它们会向协调者发起申请,请求协调者授权。
不巧的是,程序 3 正在使用临界资源。这时,协调者根据程序 2 和 4 的申请时间顺序,依
次将它们放入等待队列。在这个案例里,程序 4 的申请时间早于程序 2,因此排在程序 2
的前面。
程序 3 使用完临界资源后,通知协调者释放授权。此时,协调者从等待队列中取出程序
4,并给它发放授权。这时,程序 4 就可以使用临界资源了。
从上述流程可以看出,一个程序完成一次临界资源访问,需要如下几个流程和消息交互:
1. 向协调者发送请求授权信息,1 次消息交互;
2. 协调者向程序发放授权信息,1 次消息交互;
3. 程序使用完临界资源后,向协调者发送释放授权,1 次消息交互。
因此,每个程序完成一次临界资源访问,需要进行 3 次消息交互。
不难看出,集中式算法的优点在于直观、简单、信息交互量少、易于实现,并且所有程序只
需和协调者通信,程序之间无需通信。但是,这个算法的问题也出在了协调者身上。
![](https://csdnimg.cn/release/download_crawler_static/15930190/bg11.jpg)
因此,在使用集中式算法的时候,一定要选择性能好、可靠性高的服务器来运行协调者。
小结一下:集中式算法具有简单、易于实现的特点,但可用性、性能易受协调者影响。在可
靠性和性能有一定保障的情况下,比如中央服务器计算能力强、性能高、故障率低,或者中
央服务器进行了主备备份,主故障后备可以立马升为主,且数据可恢复的情况下,集中式算
法可以适用于比较广泛的应用场景。
民主协商:分布式算法
既然引入协调者会带来一些问题,这时你可能就会想,不用协调者是否可以实现对临界资源
的互斥访问呢?想象一下,当你需要使用自助咖啡机的时候,是不是可以先去征求其他人的
意见,在确认其他人都没在使用也暂时不会使用咖啡机时,你就可以放心大胆地去泡制自己
的咖啡了呢?
同理,我们可以把这套算法用于分布式系统。当一个程序要访问临界资源时,先向系统中的
其他程序发送一条请求消息,在接收到所有程序返回的同意消息后,才可以访问临界资源。
其中,请求消息需要包含所请求的资源、请求者的 ID,以及发起请求的时间。
这,就是民主协商法。在分布式领域中,我们称之为分布式算法,或者使用组播和逻辑时钟
的算法。
如图所示,程序 1、2、3 需要访问共享资源 A。在时间戳为 8 的时刻,程序 1 想要使用资
源 A,于是向程序 2 和 3 发起使用资源 A 的申请,希望得到它们的同意。在时间戳为 12
的时刻,程序 3 想要使用资源 A,于是向程序 1 和 2 发起访问资源 A 的请求。
一方面,协调者会成为系统的性能瓶颈。想象一下,如果有 100 个程序要访问临界资
源,那么协调者要处理 100*3=300 条消息。也就是说,协调者处理的消息数量会随着需
要访问临界资源的程序数量线性增加。
另一方面,容易引发单点故障问题。协调者故障,会导致所有的程序均无法访问临界资
源,导致整个系统不可用。
![](https://csdnimg.cn/release/download_crawler_static/15930190/bg12.jpg)
如图所示,此时程序 2 暂时不访问资源 A,因此同意了程序 1 和 3 的资源访问请求。对于
程序 3 来说,由于程序 1 提出请求的时间更早,因此同意程序 1 先使用资源,并等待程序
1 返回同意消息。
如图所示,程序 1 接收到其他所有程序的同意消息之后,开始使用资源 A。当程序 1 使用
完资源 A 后,释放使用权限,向请求队列中需要使用资源 A 的程序 3 发送同意使用资源的
消息,并将程序 3 从请求队列中删除。此时,程序 3 收到了其他所有程序的同意消息,获
得了使用资源 A 的权限,开始使用临界资源 A 的旅程。
![](https://csdnimg.cn/release/download_crawler_static/15930190/bg13.jpg)
从上述流程可以看出,一个程序完成一次临界资源的访问,需要进行如下的信息交互:
1. 向其他 n-1 个程序发送访问临界资源的请求,总共需要 n-1 次消息交互;
2. 需要接收到其他 n-1 个程序回复的同意消息,方可访问资源,总共需要 n-1 次消息交
互。
可以看出,一个程序要成功访问临界资源,至少需要 2*(n-1) 次消息交互。假设,现在系统
中的 n 个程序都要访问临界资源,则会同时产生 2n(n-1) 条消息。总结来说,在大型系统
中使用分布式算法,消息数量会随着需要访问临界资源的程序数量呈指数级增加,容易导致
高昂的“沟通成本”。
从上述分析不难看出,分布式算法根据“先到先得”以及“投票全票通过”的机制,让每个
程序按时间顺序公平地访问资源,简单粗暴、易于实现。但,这个算法可用性很低,主要包
括两个方面的原因:
针对可用性低的一种改进办法是,如果检测到一个程序故障,则直接忽略这个程序,无需再
等待它的同意消息。这就好比在自助餐厅,一个人离开餐厅了,那你在使用咖啡机前,也无
需征得他的同意。但这样的话,每个程序都需要对其他程序进行故障检测,这无疑带来了更
大的复杂性。
当系统内需要访问临界资源的程序增多时,容易产生“信令风暴”,也就是程序收到的请
求完全超过了自己的处理能力,而导致自己正常的业务无法开展。
一旦某一程序发生故障,无法发送同意消息,那么其他程序均处在等待回复的状态中,使
得整个系统处于停滞状态,导致整个系统不可用。所以,相对于集中式算法的协调者故
障,分布式算法的可用性更低。
![](https://csdnimg.cn/release/download_crawler_static/15930190/bg14.jpg)
因此,分布式算法适合节点数目少且变动不频繁的系统,且由于每个程序均需通信交互,因
此适合 P2P 结构的系统。比如,运行在局域网中的分布式文件系统,具有 P2P 结构的系统
等。
那么,在我们工作中,什么样的场景适合采用分布式算法呢?
Hadoop 是我们非常熟悉的分布式系统,其中的分布式文件系统 HDFS 的文件修改就是一
个典型的应用分布式算法的场景。
如下图所示,处于同一个局域网内的计算机 1、2、3 中都有同一份文件的备份信息,且它
们可以相互通信。这个共享文件,就是临界资源。当计算机 1 想要修改共享的文件时,需
要进行如下操作:
1. 计算机 1 向计算机 2、3 发送文件修改请求;
2. 计算机 2、3 发现自己不需要使用资源,因此同意计算机 1 的请求;
3. 计算机 1 收到其他所有计算机的同意消息后,开始修改该文件;
4. 计算机 1 修改完成后,向计算机 2、3 发送文件修改完成的消息,并发送修改后的文件
数据;
5. 计算机 2 和 3 收到计算机 1 的新文件数据后,更新本地的备份文件。
剩余329页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
lqw198421
- 粉丝: 49
- 资源: 14
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)