Theory

  • 理解 FLP-Impossibility 论文

    这篇文章尝试用更易读的方式梳理 FLP-Impossibility 论文,解释为什么在异步消息系统中,即使最多只有一个进程故障,也不存在能够同时满足 Validity、Agreement 和 Termination 的真正共识算法。正文先定义论文里的大量术语和系统模型,包括 process、configuration、schedule、bivalent、univalent 等概念,再围绕几个关键 lemma 逐步展开证明思路,说明系统总能停留在无法保证做出决议的状态。最后文章结合 Paxos、Raft 等现实算法讨论 FLP 的实际意义,即它证明的是最坏情况的存在,而工程系统必须通过随机化、时序假设或其他约束来换取可用性。

    2021年6月10日
    5.5K8
  • Amdahl’s law(阿姆达尔定律)公式推导与思考

    这篇文章围绕 Amdahl’s law 展开,说明并行计算中程序整体加速比为何会受到串行部分的限制。正文先解释公式里并行比例 a 和并行加速倍数 n 的含义,并引入 Fraction enhanced 与 Speedup enhanced 两个概念,再从总执行时间、并行代码时间和串行代码时间的关系出发,对公式 S = 1 / (1 – a + a / n) 进行推导。最后文章回到公式本身,讨论当并行比例固定、核心数持续增加时系统加速比仍存在理论上限这一结论。

    2020年10月13日
    7.1K2
  • 分布式系统中的 Partial ordering 和 Global ordering 的理解

    这篇文章用简化的事件顺序示例,解释了分布式系统中 partial ordering 与 global ordering 的区别。正文先说明全局有序要求所有事件都按统一顺序发生,而部分有序只约束存在依赖关系的那部分事件,再通过 A、B、C 三个事件的例子说明两者在系统行为上的差异,最后结合 Lamport Timestamp 指出这类逻辑时钟系统通常只能保证 partial ordering,而不是整个系统范围内的全局有序。

    2020年10月13日
    1.7K0
  • Lamport 逻辑时钟(Lamport Timestamp)和 Vector Clock 简单理解

    这篇文章从分布式系统里“真实时间不可靠、事件先后难以判断”的问题出发,系统讲解了 Lamport Timestamp 和 Vector Clock 两种逻辑时钟机制。正文先介绍 Lamport 逻辑时钟的基本规则、它与 happened-before 因果关系之间的联系,以及它无法判断并发事件关联性的局限;随后引出 Vector Clock,说明它如何通过向量比较识别独立事件,并进一步结合 Dynamo 的版本控制场景讨论其在多副本冲突检测中的应用,最后也分析了 Vector Clock 在伸缩性和唯一性上的缺陷。

    2020年10月13日
    3.6K1