• 吾皇万岁万岁万万岁
    2019-09-23
    之前去会所,一口气叫上十个嫩模,到房间之后,我就给她们讲Quorum协议怎么实现节点选举,蒙特卡洛方法的实际应用,MVCC怎么实现事务的并发,tcp怎么做到传输可靠…她们很感兴趣,我也很愉快的就回来了。
    后来我朋友听了,他们也想去,于是去了五个人(五人同行,两人免单),这次可以服务50个嫩模,每人10个,在不同的房间,我们又给她们讲了Quorum协议…蒙特卡洛…MVCC…tcp传输等等,她们很开心,我们也开心的回来了。
    再下次的时候,也去了5个人,但这次我们想服务更多的嫩模,于是我们进行了现场分组,想听Quorum的和第一个朋友走,想听蒙特卡洛的和第二个朋友走,想听MVCC的和第三个朋友走……于是我们每个人只讲一个知识点就回来了,很轻松也很开心,所以我们经常去会所。

    上面三部分,依次单机模式、数据并行、计算并行。

    后来,会所里面的姑娘都有了正经的职业,叫程序员鼓励师!
    展开

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

     19
     125
  • 1024
    2019-09-24
    ## 分布式起源
    ### 单兵模式:单机
    将服务和数据都部署到同一个节点(服务器)上
    存在的问题:单点故障,单点性能瓶颈
    ### 游击队模式:数据分布式
    实际上是水平分层
    1. 数据分层
    2. 将数据分离
    就是针对不同的请求,去路由到不同的数据节点上
    存在问题:对提升单个任务的执行性能及降低时延无效

    ### 集团军模式:任务分布式
    实际上是垂直分层
    拆分服务到不同节点,一个任务可能要请求多个服务,多个服务并行执行
    类似于不同兵种,各司其职,协同作战
    存在问题:数据的全局一致性(各节点通信),数据的可用性保证(副本),各节点的调度(哪个节点可以响应服务)
    ### 总结
    我理解的分布式:将一个任务,拆分成多个子任务,每个任务都对应一个服务,每个服务又都部署到不同的节点上,实现一个任务,多服务并行响应,最后通过调度、统筹返回请求的结果
    为什么会有分布式:是我们对性能、可用性、及可扩展性的不懈追求

    ### 课后问题
    传统的并行计算是时空上复用多处理器
    分布式是空间上给任务分配多处理器
    展开

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

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

    作者回复: 从你的留言,能看出你有勤于思考的习惯!

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

     2
     10
  • longhaiqwe
    2019-10-07
    首先,单核是无法实现真正的并行计算的,更多的是使用时间分片的方式,在各个“计算”之间跳动执行。
    然后,多核是可以实现真正的并行计算的。那我们为何不在机器上增加CPU和内存,而是去研究分布式这样的技术呢?
    我的思考哈,因为一台机器做好了放那儿,硬件是已经确定了的。假如我们需要更好的性能,也就是更多的CPU和内存,我们当然可以把机器拆了,然后现场改板子加CPU和内存,不过明显我只是为了强调不可行才说的“当然可以”。分布式的作用之一就在于我们不需要改变原来的机器,而是增加一台机器来达到增加CPU和内存的目的。这就是我理解的“可扩展性”,分布式能带来“高性能”无疑,不过不考虑在原来机器上增加CPU和内存的难度,我觉得不使用分布式技术也是可以做到的。
    最后,假设我们在一台机器上增加CPU和内存是不需要任何成本的(服务不断),也存在假设这台机器挂了,我们的服务也就会中断的问题。而使用分布式,也就是多台机器,即使其中一台挂了,还有其他机器可以对外提供服务。这就是我理解的“可用性”。
    展开
    
     7
  • Dale
    2019-09-25
    分布式核心在于将任务拆解分布在不同的服务器上,业务解耦,提高性能和可用性。并行计算核心在于充分利用服务器cpu,内存,网络资源,可以将单个任务以多进程多线程方式来运行。分布式中采用并行计算可以提高性能。
    
     7
  • 老男孩
    2019-09-24
    传统的并行计算,拿单核来说就算通过CPU的指令在多个进程或者线程间切换来实现宏观上的并行,微观上还是串行的。多核是可以真正实现并行的。传统的并行计算是同一个主机的不同进程或者线程,分布式是不同物理主机中的进程或者线程。
    
     4
  • c-xyy
    2019-10-13
    分布式强调拆分,如果面对的问题的瓶颈在数据量,则讲焦点集中在数据的拆分上,也就是数据分布式;如果问题的瓶颈在任务执行逻辑的复杂性上,则将任务进行拆分,也就是计算的分布式;讲相同的逻辑部署在多个节点上,一般称之为集群,平时我们经常说分布式集群系统,实际的包含了底层任务的拆分和多机部署的含义。
    
     3
  • Geek_54edc1
    2019-09-24
    并行计算强调运算的同时进行,对于多核处理器,就是每个处理器都同时进行运算;而分布式更多是从数据、任务的并行上来考虑,通常是利用多台机器,较少考虑多处理器并行的问题
    
     3
  • 向往的生活
    2019-09-23
    厉害

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

    
     3
  • 布小丫学编程
    2019-11-16
    如果系统的瓶颈在数据量太大,则对数据进行分片,如MySQL的数据分片和Redis Cluster。
    如果系统的瓶颈在于业务复杂,耦合度太高,则将任务拆分到各个微服务,分别部署到不同服务器上,这就是常说的分布式微服务。
    如果系统的瓶颈在于单个微服务负载过高,难以处理高并发请求时,则使用集群部署,同一个微服务有多个实例,应该也可以叫做并行计算吧。
    
     2
  • 旅途
    2019-10-13
    数据并行例子中,上面两个服务访问下面的数据库是不是应该是交叉的,每个服务都可以访问下面两个数据库,否则就是服务和地点有绑顶关系,按你接下来说的请求转发,那么就是根据查询的地点来指定特定的服务器,而不是负载均衡了
    
     1
  • 阿亮
    2019-10-02
    任务并行不是特别理解。如果有一个任务有多个任务组成,且是顺序执行的,前后有依赖,在这种情况下,无论怎么拆分也是不可能提高效率的吧,如果放到不同机器上,是否还会降低执行效率?
     2
     1
  • zhaozp
    2019-09-29
    打卡文章学习:
        1、分布式是系统架构不断演进的结果,是对系统性能不断追求的结果。单机模式的缺点是性能瓶颈并且有单点故障。这时系统中往往最先出现的数据瓶颈所以先出现数据并行(分库分表,读写分离)等,任务也会水平扩展增加节点通过负载均衡路由,缺点就是对提升单个任务的性能和时延无效。随着系统的复杂性提升,任务的执行成为系统瓶颈,这时需要对任务进行拆分,拆分成小粒度的子任务,容器技术也实现了子任务单独部署,当然缺点是引入了系统的复杂度。
        
    2、分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的计算方式。结合"四横":数据并行就是对数据存储和管理的分布式化、任务并行就是对计算方式的分布式化,也会涉及资源池的分布式和通信的分布式。结合"四纵":数据和任务拆分后怎么解决分布式协同、分布式调度、分布式高可用的问题,容器化技术也致力于解决分布式部署问题。

    课后思考:
        我理解传统的并行计算还是运行于单服务器,其核心在于充分利用服务器的CPU、内存等资源,可以通过多线程并发技术实现。而分布式是把任务拆分到不同的服务器上,是业务解耦,提高可用性和可扩展性。但是也引入了系统设计复杂度。
    展开

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

    
     1
  • leslie
    2019-09-23
    关于分布式和并行计算的区别:
       1)从虚拟化这块来解释:分布式其实就是我们现在所最常用的Kubernetes或者docker,传统的并行就是Vmware
        2)从数据系统这块来来解释就是:RMDB和no sql DB的区别;RMDB严格遵守ACID特性,nosql 做不到只能在CAP中选择其中的2项。
       不知道这样的解释是否算是一种解释吧。
    
     1
  • 不知
    2019-09-23
    老师举的数据并行的例子 不是任务并行吗 让他们处理各自的地区的订单 只不过没把任务划分成更小的子任务
    
     1
  • 不知
    2019-09-23
    我还是不理解 数据并行和任务并行的区别 任务并行时 不会划分数据吗 老师说 通常结合两者使用 如何结合 能举一个例子吗
     1
     1
  • AKA三皮
    2019-09-23
    集团军引入的复杂性,我的理解就是服务拆分引入的复杂性:数据聚合、分布式事务等等
     2
     1
  • 白前辈
    2020-01-20
    单机到集群的演进过程是为了适应要求越来越高的任务需求,任务需求的要求越来越高表现在,任务的执行需要越来越多(好)的存储能力,越来越多(快)的计算能力,越来越好的响应能力(短时延,可以认为是计算和存储的一个向量和)。从单机计算到并行计算再到集群计算,并行计算解决了单机计算的存储受限、计算资源紧张的问题,但是也引入了资源管理、资源调度、任务调度、分布式环境一致性、计算模式单一等问题。集群模式正式为了解决这一些问题的,在逻辑上将分化的计算资源、存储资源以统一的接口和api暴露给用户,用户在使用上感觉依然像是一台服务器一样。
    
    
  • loser
    2020-01-19
    单机计算机,有指令并行,数据并行。扩大到多机,也还是指令并行(任务并行),数据并行(数据分布式)。提升性能与稳定性思维方式基本上没有发生变化。但是单机的指令并行和数据并行 ,与多机的指令并行和数据并行,中间又有自己的问题需要解决。
    
    
  • 曾泽伟
    2020-01-14
    分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式
    那不是和集群很像吗?
    集群我认为就是将相同的程序运行在多台计算机上
    那集群和分布式的区别到底是什么
    
    
我们在线,来聊聊吧