集群和分布式的一些概念梳理(二)- 分布式

分布式范畴很广,比如分布式存储、分布式网络、分布式计算、分布式服务、分布式系统、分布式架构等

通常分布式系统通常是指联网的计算机,具备共同的目标,比如解决大型计算问题或者提供共享服务,其目的是协调共享资源的使用或向用户提供通信服务

1. 分布式(Distribute,突出共同目标)

1.1. 分布式概念

  • 分布式操作系统是在独立的,集合的软件网络化,通信和物理上独立的计算节点,它们处理由多个CPU提供服务的作业。每个单独的节点都拥有全局聚合操作系统的特定软件子集。每个子集都是两个不同服务提供者的组合。第一个是无处不在的最小内核或微内核,它直接控制该节点的硬件。其次是系统管理组件的更高级别集合协调节点的个人和协作活动。这些组件抽象微内核功能并支持用户应用程序。
  • 分布式操作系统提供操作系统所需的基本服务和功能,但添加了属性和特定配置,以支持其他要求,例如增加规模和可用性。对于用户而言,分布式OS以类似于单节点单片操作系统的方式工作。也就是说,虽然它由多个节点组成,但它对用户和应用程序来说都是单节点。

1.2. 分布式特征

  • 实体自治(通常指分布式节点,甚至是分布式应用进程),实体可以独立运行和管控
  • 实体间通过消息传递互相通信(比如HTTP、RPC、THRIFT、GRPC等)

1.3. 分布式的其他属性

  • 分布式系统必须容忍整体计算机的故障
  • 系统的结构(网络拓扑,网络延迟,计算机的数量)是事先不知道的,系统可以包括不同种类的计算机和网络链路,并且系统可以在分布式程序的执行期间改变。
  • 每台计算机只有一个有限的,不完整的系统视图。每台计算机只能知道输入的一部分。

1.4. 分布式好处

  • 可靠性,没有单点故障
  • 分布式系统可以更容易扩展和管理
  • 性能收益,使用几个低端计算机的集群来获得期望的性能水平可能更具成本效益

1.5. 分布式问题

  • 分布式算法
  • 餐饮哲学家问题
  • 互斥
  • 死锁
  • 共识问题
  • 拜占庭容错
  • 时钟同步
  • 选举

1.6. 分布式架构

  • 客户端 - 服务器:C/S
  • 三层:Web应用,展示层、逻辑层、数据层
  • n-tier:引用Web应用程序的体系结构,它进一步将其请求转发给其他应用程序
  • 点对点
  • SOA架构
  • 微服务架构

分布式计算体系结构的另一个基本方面是在并发进程之间通信和协调工作的方法。通过各种消息传递协议,进程可以彼此直接通信,通常以主/从关系。或者,“以数据库为中心”的体系结构可以通过利用共享数据库使得能够在没有任何形式的直接进程间通信的情况下完成分布式计算

2. 并行和分布式计算

  • 并行计算可以被看作分布式计算的一个特定的紧密耦合的形式,分布式计算可以被视为并行计算的松散耦合形式
  • 并行和分布式的区别(颗粒度):
    • 在并行计算中,所有处理器可以访问共享存储器以在处理器之间交换信息
    • 在分布式计算中,每个处理器都有自己的专用内存(分布式内存)。通过在处理器之间传递消息来交换信息。
  • 并行算法和分布式算法:
    • 共享内存多处理器中的高性能并行计算使用并行算法
    • 大规模分布式系统的协调使用分布式算法

3. 并行和并发

  • 并发计算:突出在同一时间执行任务,微观上面任务执行还是有先后的
  • 并行计算:突出在多处理器上同时执行任务

4. 分布式数据存储CAP理论

参考:https://en.wikipedia.org/wiki/CAP_theorem

4.1. CAP理论

  • 一致性(Consistency:):每次读取都会收到最近的写入或错误
  • 可用性(Availability):每个请求都会收到(非错误)响应 - 可以不保证它包含最新的写入
  • 网络分区容忍性(Partition tolerance):尽管分布式存储节点之间的网络丢弃(或延迟)任意数量的消息,系统仍继续运行

4.2. CAP说明

  • 没有分布式系统可以避免网络故障,因此通常必须容忍网络分区。(P不能割舍)
  • CP(一致,但不一定高可用,分区数据要做数据同步,导致可能不可用)架构
    • 在选择一致性(consistency)而非可用性(availablity)时,如果由于网络分区而无法保证特定信息是最新的,则系统将返回错误或超时。
  • AP(可用,但可能不是最新的)架构
    • 在选择可用性(availablity)而非一致性(consistency)时,系统将始终处理查询并尝试返回最新的可用信息版本,即使由于网络分区而无法保证其是最新的。(可能存在脑裂问题,信哪个可用的情况)
  • 在没有网络故障的情况下,也就是说,当分布式系统正常运行时,可以满足可用性(A)和一致性(C)
  • CAP经常被误解,好像必须始终选择放弃三种保证中的一种。实际上,只有在发生网络分区或故障时,才能在一致性和可用性之间进行选择; 在所有其他时间,不需要进行任何权衡。
  • 考虑到传统ACID设计的数据库系统,例如RDBMS选择一致性而非可用性,而围绕BASE理念设计的系统(例如NoSQL运动中常见的)选择可用性而不是一致性
  • 高可用性要求意味着系统必须复制数据。一旦分布式系统复制数据,就会出现一致性和延迟之间的权衡。

5. PACELC定理(PAC ELSE PLC)

参考:https://en.wikipedia.org/wiki/PACELC_theorem

  • PACELC定理是CAP定理的扩展。它指出,在分布式计算机系统中进行网络分区(P)时,必须在可用性(A)和一致性(C)(根据CAP定理)之间进行选择,否则(E),即使系统是在没有分区的情况下正常运行,必须在延迟(L)和一致性(C)之间进行选择。
  • PACELC建立在CAP定理的基础上。这两个定理都描述了分布式数据库如何在一致性,可用性和分区容错方面具有局限性和权衡。然而,PACELC进一步说明了另一个权衡因素:即使没有分区,也存在延迟和一致性之间的时间,从而更全面地描述分布式系统的潜在一致性权衡
  • 高可用性要求意味着系统必须复制数据。一旦分布式系统复制数据,就会出现一致性和延迟之间的权衡。

6. 参考

  • 计算机集群:https://en.wikipedia.org/wiki/Computer_cluster
  • 集群高可用:https://en.wikipedia.org/wiki/High-availability_cluster
  • 故障转移:https://en.wikipedia.org/wiki/Failover
  • 并行计算:https://en.wikipedia.org/wiki/Parallel_computing
  • 分布式计算:https://en.wikipedia.org/wiki/Distributed_computing
  • CAP理论:https://en.wikipedia.org/wiki/CAP_theorem
  • PACELC定理:https://en.wikipedia.org/wiki/PACELC_theorem
  • 分布式操作系统:https://en.wikipedia.org/wiki/Distributed_operating_system
  • 大神人物:https://en.wikipedia.org/wiki/Edsger_W._Dijkstra