01 | 分布式缘何而起:从单兵,到游击队,到集团军
该思维导图由 AI 生成,仅供参考
分布式起源
单兵模式:单机模式
- 深入了解
- 翻译
- 解释
- 总结
分布式计算模式的发展可以比喻为从单兵作战到集团军作战的演进过程。最初的单机模式存在性能瓶颈和单点失效问题,随后出现了数据并行模式,通过多台计算机并行处理多个请求来提高计算效率,但仍存在单个任务执行性能不足的问题。最终,任务并行模式将单个复杂任务拆分为多个子任务,并行执行在不同计算机上,从而提高了整体执行效率。这种模式提供了更好的性能、扩展性和可维护性,但也带来了设计上的复杂性问题。文章通过铁路售票系统的例子生动地解释了这些模式的原理和优化方法,为读者深入理解分布式计算提供了有益的指导。 分布式计算模式的发展可以比喻为从单兵作战到集团军作战的演进过程。最初的单机模式存在性能瓶颈和单点失效问题,随后出现了数据并行模式,通过多台计算机并行处理多个请求来提高计算效率,但仍存在单个任务执行性能不足的问题。最终,任务并行模式将单个复杂任务拆分为多个子任务,并行执行在不同计算机上,从而提高了整体执行效率。这种模式提供了更好的性能、扩展性和可维护性,但也带来了设计上的复杂性问题。文章通过铁路售票系统的例子生动地解释了这些模式的原理和优化方法,为读者深入理解分布式计算提供了有益的指导。
《分布式技术原理与算法解析》,新⼈⾸单¥59
全部留言(80)
- 最新
- 精选
- 吾皇万岁万岁万万岁之前去会所,一口气叫上十个嫩模,到房间之后,我就给她们讲Quorum协议怎么实现节点选举,蒙特卡洛方法的实际应用,MVCC怎么实现事务的并发,tcp怎么做到传输可靠…她们很感兴趣,我也很愉快的就回来了。 后来我朋友听了,他们也想去,于是去了五个人(五人同行,两人免单),这次可以服务50个嫩模,每人10个,在不同的房间,我们又给她们讲了Quorum协议…蒙特卡洛…MVCC…tcp传输等等,她们很开心,我们也开心的回来了。 再下次的时候,也去了5个人,但这次我们想服务更多的嫩模,于是我们进行了现场分组,想听Quorum的和第一个朋友走,想听蒙特卡洛的和第二个朋友走,想听MVCC的和第三个朋友走……于是我们每个人只讲一个知识点就回来了,很轻松也很开心,所以我们经常去会所。 上面三部分,依次单机模式、数据并行、计算并行。 后来,会所里面的姑娘都有了正经的职业,叫程序员鼓励师!
作者回复: 你确定你开的不是时光机吗?为什么读着你的文字总有种移步换景,有种穿越的错觉?:)
2019-09-2327227 - 1024## 分布式起源 ### 单兵模式:单机 将服务和数据都部署到同一个节点(服务器)上 存在的问题:单点故障,单点性能瓶颈 ### 游击队模式:数据分布式 实际上是水平分层 1. 数据分层 2. 将数据分离 就是针对不同的请求,去路由到不同的数据节点上 存在问题:对提升单个任务的执行性能及降低时延无效 ### 集团军模式:任务分布式 实际上是垂直分层 拆分服务到不同节点,一个任务可能要请求多个服务,多个服务并行执行 类似于不同兵种,各司其职,协同作战 存在问题:数据的全局一致性(各节点通信),数据的可用性保证(副本),各节点的调度(哪个节点可以响应服务) ### 总结 我理解的分布式:将一个任务,拆分成多个子任务,每个任务都对应一个服务,每个服务又都部署到不同的节点上,实现一个任务,多服务并行响应,最后通过调度、统筹返回请求的结果 为什么会有分布式:是我们对性能、可用性、及可扩展性的不懈追求 ### 课后问题 传统的并行计算是时空上复用多处理器 分布式是空间上给任务分配多处理器
作者回复: 积跬步,而终至千里!加油!
2019-09-24331 - 臧咔嚓"分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。“ 这就相当于说 ”分布式是一种计算方式“,感觉有点别扭,套用到分布式协调、分布式计算、分布式存储上,感觉更别扭。
作者回复: 从你的留言,能看出你有勤于思考的习惯! 我想你如果理解下面两个问题,你的困惑也就消除了: 1. 为什么个人电脑、服务器、平板、手机等都可以叫做计算机,而不是叫做存储机或其它机? 2. 为什么大学里一级学科一般都只有计算机科学与技术,而没有什么存储科学与技术或协调科学与技术?
2019-09-23318 - zhaozp打卡文章学习: 1、分布式是系统架构不断演进的结果,是对系统性能不断追求的结果。单机模式的缺点是性能瓶颈并且有单点故障。这时系统中往往最先出现的数据瓶颈所以先出现数据并行(分库分表,读写分离)等,任务也会水平扩展增加节点通过负载均衡路由,缺点就是对提升单个任务的性能和时延无效。随着系统的复杂性提升,任务的执行成为系统瓶颈,这时需要对任务进行拆分,拆分成小粒度的子任务,容器技术也实现了子任务单独部署,当然缺点是引入了系统的复杂度。 2、分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的计算方式。结合"四横":数据并行就是对数据存储和管理的分布式化、任务并行就是对计算方式的分布式化,也会涉及资源池的分布式和通信的分布式。结合"四纵":数据和任务拆分后怎么解决分布式协同、分布式调度、分布式高可用的问题,容器化技术也致力于解决分布式部署问题。 课后思考: 我理解传统的并行计算还是运行于单服务器,其核心在于充分利用服务器的CPU、内存等资源,可以通过多线程并发技术实现。而分布式是把任务拆分到不同的服务器上,是业务解耦,提高可用性和可扩展性。但是也引入了系统设计复杂度。
作者回复: 积跬步,而终至千里!加油!
2019-09-299 - 景梦园世界上的任何事物都是在做Trade-Off,根据奥卡姆剃刀原则,能用简单的就不用复杂的。虽然在学分布式,但是也要看到三种模式各有优劣的。另外最近也在学并发编程,感觉并发编程是”微观“的分布式,系统级是”宏观”的,触类旁通。
作者回复: 👍👍👍
2020-05-115 - 向往的生活厉害
作者回复: 宝剑锋自磨砺出,加油!:)
2019-09-233 - 张理查分布式技术原理与算法#Day2 今天打卡了第一节和第二节课,解决了两个议题,第一个是究竟什么算分布式,第二个是如何评价分布式系统。 首先我们将系统抽象成代码和数据。所谓单机模式就是部署在一台机器上,但第一是性能有瓶颈,第二是挂了系统就没了,存在单点问题。我们解决这个问题的思路是分数据和分代码:分数据,又叫并行计算,就是将数据分多台机器,跑同样的代码,这样好处是解决了性能瓶颈,但有三个问题,一是分配均匀的问题,可以引入负载均衡器,二是分布后的数据如果单一入口访问,会有IO瓶颈,可以通过读写分离解决,其实就是增加入口,三是热点数据的问题,我们通过缓存机制可以解决。分数据相当于通过增加员工数量解决项目过多的问题,但无法解决单个项目的完成时间,这里假设一个人干一个项目。分代码,就是分解项目分工,通过增加工种数量来提升单个项目的方式,因此分代码包括业务拆分和子业务并行两个步骤,好处就是可以找到代码瓶颈,有的放矢,但这么做的代价就是引入了复杂性,毕竟工种多了,多个人干一个项目就有协调的问题。 那么什么是分布式呢?其实就是我们不满足单个机器的性能,可用性,因而将代码用多台机器来跑,如果任务简单就是数据量大,那我们就拆数据,代码不变,一起跑。如果任务复杂,那我们就拆代码,有性能瓶颈的任务多分点机器干。 当然,你肯定会想又切数据又切代码。这在生产也很常见。
作者回复: 赞,举一反三,触类旁通!
2019-12-201 - summer赞
作者回复: 谢谢!宝剑赠英雄,红粉赠佳人!
2019-09-29 - 静水流深打卡第二天,谢谢老师分享
作者回复: 积跬步,而终至千里!加油!
2019-09-29 - c-xyy分布式强调拆分,如果面对的问题的瓶颈在数据量,则讲焦点集中在数据的拆分上,也就是数据分布式;如果问题的瓶颈在任务执行逻辑的复杂性上,则将任务进行拆分,也就是计算的分布式;讲相同的逻辑部署在多个节点上,一般称之为集群,平时我们经常说分布式集群系统,实际的包含了底层任务的拆分和多机部署的含义。2019-10-1312