Corfu 实现和 phxpaxos 源码阅读心得

来自Dennis的知识库
跳转到: 导航搜索


localstorage 篇

  • 实现存储功能,主要是实现 include/paxos/storage.h 中的接口。
  • 存储基于 leveldb 实现,但是做了优化,因为 leveldb 不适合大 value 的写入(compaction 和写放大影响),因此做了优化, value 保存的其实是 FD(文件 id + checksum 等元信息组成的概念),实际是写入 phxpaxos 自己实现的 LogStore 类( log_store.cpp)。
  • LogStore 的数据写入要求强制落盘,为了避免 fsync 的低效,它是预先创建固定大小的的文件,然后用 fsyncdata 来更新文件数据,避免二次更新文件元信息来提升效率。
  • corfu 的 log store 准备先采用简单方案实现,可能基于 dets 。
个人工具
名字空间

变换
操作
导航
工具箱