<aside> 💡 如果说Linux下一切皆文件,那么分布式存储系统下一切皆Log

</aside>

Introducation

Apache BooKeeper是一个可扩展、容错、低延迟的在线存储服务,提供了持久性、复制以及强一致的特性,基于Bookeeper可以构建一个可靠的在线服务。提供了日志流的存储,基本的存储和读取单元是Entry/Record,能够保证每个Entry都能够复制到多台机器上,确保数据的可靠不丢失。

目前基于Bookeeper构建的在线服务包括:

Movation

BookKeeper的最初是为了记录HDFS Namenode的的操作记录的,确保了在Namenode在故障的时候能够快速恢复,也就是作为Namenode的WAL进行使用的。但是BookKeeper现在的应用远远不止于此,基本上任何需要基于Append语义的应用程序都可以使用Bookeeper作为其数据存储系统。BookKeeper为这些应用程序提供了许多优势:

Basic Terms

Entries

使我们写入的Log的基本单元,包含了用户写入的数据以及一些基本的元数据,一些列连续的Entry被组织成一个Ledger,或者说Entry是写入了指定一个Ledger。每个Log Entry包含下面的信息

Untitled

Ledgers

是Bookeeper的基本存储单元,包含了一些列连续的Entries,Bookeeper可以保证Eentry是顺序写入,并且最多被写入一次,Entry一旦被写入将不不能被修改。