分布式系统CAP原理

  • 一致性(Consistency):

    分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

  • 可用性(Availability)

    集群出现故障节点后,是否还能响应客户端的读写请求。(对数据更新具备高可用性)

  • 分区容忍性(Partition tolerance)

    实际中通信产生延时。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C点和A点之间做出选择。

如何建造一个系统(迭代方式)

  1. 拿到一个问题(需求),先通过分析做一个简单的模型;
  2. 将简单的模型详细化(按照软件设计层级),但不需要多漂亮,达到能完成功能即可;
  3. 按照设计快速实现一遍;
  4. 按照使用者的角度使用一遍,提出一堆需求,然后重构,然后回到步骤2,直到软件结构能够较为清晰(最高目标当然是代码及目录结构可以自解释)

软件设计层级

  1. 先从整个软件系统的用途思考
  2. 分解软件系统为一个一个的package,并且package是如何交互的
  3. 接着分解成类,每个类要有明确的交互对象
  4. 分解成子程序(Function)
  5. 最后才是实际运行的代码

分成这些样子之外还要对同等级之间的相互访问进行限制,不同等级之间的尽可能在设计上就不要相互影响