Distributed systems for fun and profit

分布式系统的限制
1.信息最多以光速传播
2.独立的事情独立失败
在这些限制定义了一个可能的系统设计解空间,在这个解空间中寻找最佳解

理解分布式系统的很大一部分是关于理解时间和顺序

应对限制
1.分区,以便进行并行处理
2.复制,被复制或缓存在不同的节点上,以减少客户机和服务器之间的距离,并提高容错能力(复制)

分布式系统中的程序
1.在独立的节点上同时运行

  1. 是通过一个网络连接起来的,这个网络可能会引入不确定性和信息丢失
  2. 没有共享内存或共享时钟
    也就是说:
    1.每个节点并发执行一个程序
  3. 知识是本地的:节点只能快速访问他们的本地状态,任何关于全局状态的信息都有可能过时
  4. 节点可以独立地失败并从失败中恢复
  5. 消息可以延迟或丢失(不容易区分网络故障和节点故障)
  6. 节点之间不同步时钟(本地时间戳不符合全局真实时间顺序,而且这是不容易观察到的)

分布式系统抽象

  1. 这些节点有什么能力,以及它们如何识别
  2. 通信链路是如何运作的,它们是如何失败的
  3. 整个系统的属性,时间和顺序的假设

系统模型中的节点
1.执行程序的能力

  1. 将数据存储到易失存储器和进入稳定状态的能力
    3.时钟(可能被认为是准确的,也可能不是)

CAP 中的C 是属于强一致性
强一致性:
1.可线性化的一致性
2.顺序一致性
弱一致性:

  1. 以客户为中心的一致性模型
  2. 因果一致性:可用的最强模型
  3. 最终一致性模型

分布式是用多台计算机去解决可以再一台计算机上解决的问题,而任何一个一次只能做一件事的系统都会创建一个操作的总次序。

时间在分布系统中的三种接受
1.顺序---1.我们可以给无序事件加上时间戳来排序,2我们可以使用时间戳来掐强制执行特定的操作顺序或消息传递,3可以用时间戳的值来确定某件事是否先于其他事情按时间顺序发送

分布式系统中时间的好处
1.时间可以定义整个系统的顺序(不需要通信)

  1. 时间可以为算法定于边界条件

你可能感兴趣的:(Distributed systems for fun and profit)