摘要
本文摘自 Joshua Lockerman等人发表的论文 The FuzzyLog: A Partially Ordered Shared Log 。The FuzzyLog 一文介绍了名为 FuzzyLog 的 shared log 设计。
问题
大规模系统往往依赖于控制服务(如文件系统中的 namenode)。这类服务从单节点走向分布式时,要想保持服务的持久性、高可用和可扩展性会带来新挑战。传统的做法是依赖于分布式协议,如 Paxos 或两阶段提交(2PC)。基于共享日志抽象(shared log abstraction)的设计是一种新思路。
采取这种设计思路的有zlog, Sirius, Chariots。但目前基于 shared log 设计的系统要求维护系统全局全序,这个要求开销昂贵、难于达成,在某种意义上来说没有必要。基于此,Lockerman 等人设计了 FuzzyLog,它只需要维护日志的偏序关系。在抽象上,它是一个有向无环图(DAG),节点表示日志,一条从 A 到 B 的边表示 A 必须在 B 之后执行。
名词解析
-
全序: 简单来说,如果一个集合中任意一对元素都可以互相比较