分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

01 | 分布式缘何而起:从单兵,到游击队,到集团军

设计上的复杂性问题
提高性能、扩展性、可维护性
多个子任务并行执行
任务拆分
问题:对提升单个任务的执行性能及降低时延无效
缓存机制
读写分离
负载均衡
数据拆分
并行计算
单点失效问题
计算效率瓶颈
功能、代码和数据集中
分布式与传统的并行计算的区别
任务并行模式
数据并行模式
单机模式
数据并行、任务并行
程序运行在多台计算机上
集团军模式:任务并行或任务分布式
游击队模式:数据并行或数据分布式
单兵模式:单机模式
课后思考
总结
定义
起源
分布式

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。这是专栏的第一篇文章,我们先来聊聊什么是分布式。
与其直接用些抽象、晦涩的技术名词去给分布式下一个定义,还不如从理解分布式的发展驱动因素开始,我们一起去探寻它的本质,自然而然地也就清楚它的定义了。
在今天这篇文章中,我将带你了解分布式的起源,是如何从单台计算机发展到分布式的,进而帮助你深入理解什么是分布式。为了方便你更好地理解这个演进过程,我将不考虑多核、多处理器的情况,假定每台计算机都是单核、单处理器的。

分布式起源

单兵模式:单机模式

1946 年情人节发布的 ENIAC 是世界上的第一台通用计算机,它占地 170 平米重达 30 吨,每秒可进行 5000 次加法或者 400 次乘法运算,标志着单机模式的开始。
所谓单机模式是指,所有应用程序和数据均部署在一台电脑或服务器上,由一台计算机完成所有的处理。
以铁路售票系统为例,铁路售票系统包括用户管理、火车票管理和订单管理等模块,数据包括用户数据、火车票数据和订单数据等,如果使用单机模式,那么所有的模块和数据均会部署在同一台计算机上,也就是说数据存储、请求处理均由该计算机完成。这种模式的好处是功能、代码和数据集中,便于维护、管理和执行。
单机模式的示意图,如下所示:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式计算模式的发展可以比喻为从单兵作战到集团军作战的演进过程。最初的单机模式存在性能瓶颈和单点失效问题,随后出现了数据并行模式,通过多台计算机并行处理多个请求来提高计算效率,但仍存在单个任务执行性能不足的问题。最终,任务并行模式将单个复杂任务拆分为多个子任务,并行执行在不同计算机上,从而提高了整体执行效率。这种模式提供了更好的性能、扩展性和可维护性,但也带来了设计上的复杂性问题。文章通过铁路售票系统的例子生动地解释了这些模式的原理和优化方法,为读者深入理解分布式计算提供了有益的指导。 分布式计算模式的发展可以比喻为从单兵作战到集团军作战的演进过程。最初的单机模式存在性能瓶颈和单点失效问题,随后出现了数据并行模式,通过多台计算机并行处理多个请求来提高计算效率,但仍存在单个任务执行性能不足的问题。最终,任务并行模式将单个复杂任务拆分为多个子任务,并行执行在不同计算机上,从而提高了整体执行效率。这种模式提供了更好的性能、扩展性和可维护性,但也带来了设计上的复杂性问题。文章通过铁路售票系统的例子生动地解释了这些模式的原理和优化方法,为读者深入理解分布式计算提供了有益的指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(80)

  • 最新
  • 精选
  • 吾皇万岁万岁万万岁
    之前去会所,一口气叫上十个嫩模,到房间之后,我就给她们讲Quorum协议怎么实现节点选举,蒙特卡洛方法的实际应用,MVCC怎么实现事务的并发,tcp怎么做到传输可靠…她们很感兴趣,我也很愉快的就回来了。 后来我朋友听了,他们也想去,于是去了五个人(五人同行,两人免单),这次可以服务50个嫩模,每人10个,在不同的房间,我们又给她们讲了Quorum协议…蒙特卡洛…MVCC…tcp传输等等,她们很开心,我们也开心的回来了。 再下次的时候,也去了5个人,但这次我们想服务更多的嫩模,于是我们进行了现场分组,想听Quorum的和第一个朋友走,想听蒙特卡洛的和第二个朋友走,想听MVCC的和第三个朋友走……于是我们每个人只讲一个知识点就回来了,很轻松也很开心,所以我们经常去会所。 上面三部分,依次单机模式、数据并行、计算并行。 后来,会所里面的姑娘都有了正经的职业,叫程序员鼓励师!

    作者回复: 你确定你开的不是时光机吗?为什么读着你的文字总有种移步换景,有种穿越的错觉?:)

    2019-09-23
    27
    227
  • 1024
    ## 分布式起源 ### 单兵模式:单机 将服务和数据都部署到同一个节点(服务器)上 存在的问题:单点故障,单点性能瓶颈 ### 游击队模式:数据分布式 实际上是水平分层 1. 数据分层 2. 将数据分离 就是针对不同的请求,去路由到不同的数据节点上 存在问题:对提升单个任务的执行性能及降低时延无效 ### 集团军模式:任务分布式 实际上是垂直分层 拆分服务到不同节点,一个任务可能要请求多个服务,多个服务并行执行 类似于不同兵种,各司其职,协同作战 存在问题:数据的全局一致性(各节点通信),数据的可用性保证(副本),各节点的调度(哪个节点可以响应服务) ### 总结 我理解的分布式:将一个任务,拆分成多个子任务,每个任务都对应一个服务,每个服务又都部署到不同的节点上,实现一个任务,多服务并行响应,最后通过调度、统筹返回请求的结果 为什么会有分布式:是我们对性能、可用性、及可扩展性的不懈追求 ### 课后问题 传统的并行计算是时空上复用多处理器 分布式是空间上给任务分配多处理器

    作者回复: 积跬步,而终至千里!加油!

    2019-09-24
    3
    31
  • 臧咔嚓
    "分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。“ 这就相当于说 ”分布式是一种计算方式“,感觉有点别扭,套用到分布式协调、分布式计算、分布式存储上,感觉更别扭。

    作者回复: 从你的留言,能看出你有勤于思考的习惯! 我想你如果理解下面两个问题,你的困惑也就消除了: 1. 为什么个人电脑、服务器、平板、手机等都可以叫做计算机,而不是叫做存储机或其它机? 2. 为什么大学里一级学科一般都只有计算机科学与技术,而没有什么存储科学与技术或协调科学与技术?

    2019-09-23
    3
    18
  • zhaozp
    打卡文章学习: 1、分布式是系统架构不断演进的结果,是对系统性能不断追求的结果。单机模式的缺点是性能瓶颈并且有单点故障。这时系统中往往最先出现的数据瓶颈所以先出现数据并行(分库分表,读写分离)等,任务也会水平扩展增加节点通过负载均衡路由,缺点就是对提升单个任务的性能和时延无效。随着系统的复杂性提升,任务的执行成为系统瓶颈,这时需要对任务进行拆分,拆分成小粒度的子任务,容器技术也实现了子任务单独部署,当然缺点是引入了系统的复杂度。 2、分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的计算方式。结合"四横":数据并行就是对数据存储和管理的分布式化、任务并行就是对计算方式的分布式化,也会涉及资源池的分布式和通信的分布式。结合"四纵":数据和任务拆分后怎么解决分布式协同、分布式调度、分布式高可用的问题,容器化技术也致力于解决分布式部署问题。 课后思考: 我理解传统的并行计算还是运行于单服务器,其核心在于充分利用服务器的CPU、内存等资源,可以通过多线程并发技术实现。而分布式是把任务拆分到不同的服务器上,是业务解耦,提高可用性和可扩展性。但是也引入了系统设计复杂度。

    作者回复: 积跬步,而终至千里!加油!

    2019-09-29
    9
  • 景梦园
    世界上的任何事物都是在做Trade-Off,根据奥卡姆剃刀原则,能用简单的就不用复杂的。虽然在学分布式,但是也要看到三种模式各有优劣的。另外最近也在学并发编程,感觉并发编程是”微观“的分布式,系统级是”宏观”的,触类旁通。

    作者回复: 👍👍👍

    2020-05-11
    5
  • 向往的生活
    厉害

    作者回复: 宝剑锋自磨砺出,加油!:)

    2019-09-23
    3
  • 张理查
    分布式技术原理与算法#Day2 今天打卡了第一节和第二节课,解决了两个议题,第一个是究竟什么算分布式,第二个是如何评价分布式系统。 首先我们将系统抽象成代码和数据。所谓单机模式就是部署在一台机器上,但第一是性能有瓶颈,第二是挂了系统就没了,存在单点问题。我们解决这个问题的思路是分数据和分代码:分数据,又叫并行计算,就是将数据分多台机器,跑同样的代码,这样好处是解决了性能瓶颈,但有三个问题,一是分配均匀的问题,可以引入负载均衡器,二是分布后的数据如果单一入口访问,会有IO瓶颈,可以通过读写分离解决,其实就是增加入口,三是热点数据的问题,我们通过缓存机制可以解决。分数据相当于通过增加员工数量解决项目过多的问题,但无法解决单个项目的完成时间,这里假设一个人干一个项目。分代码,就是分解项目分工,通过增加工种数量来提升单个项目的方式,因此分代码包括业务拆分和子业务并行两个步骤,好处就是可以找到代码瓶颈,有的放矢,但这么做的代价就是引入了复杂性,毕竟工种多了,多个人干一个项目就有协调的问题。 那么什么是分布式呢?其实就是我们不满足单个机器的性能,可用性,因而将代码用多台机器来跑,如果任务简单就是数据量大,那我们就拆数据,代码不变,一起跑。如果任务复杂,那我们就拆代码,有性能瓶颈的任务多分点机器干。 当然,你肯定会想又切数据又切代码。这在生产也很常见。

    作者回复: 赞,举一反三,触类旁通!

    2019-12-20
    1
  • summer

    作者回复: 谢谢!宝剑赠英雄,红粉赠佳人!

    2019-09-29
  • 静水流深
    打卡第二天,谢谢老师分享

    作者回复: 积跬步,而终至千里!加油!

    2019-09-29
  • c-xyy
    分布式强调拆分,如果面对的问题的瓶颈在数据量,则讲焦点集中在数据的拆分上,也就是数据分布式;如果问题的瓶颈在任务执行逻辑的复杂性上,则将任务进行拆分,也就是计算的分布式;讲相同的逻辑部署在多个节点上,一般称之为集群,平时我们经常说分布式集群系统,实际的包含了底层任务的拆分和多机部署的含义。
    2019-10-13
    12
收起评论
显示
设置
留言
80
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部