“Corfu 实现和 phxpaxos 源码阅读心得”的版本间的差异

来自Dennis的知识库
跳转到: 导航搜索
(以“ == localstorage 篇== 1. 实现存储功能,主要是实现 include/paxos/storage.h 中的接口。 2. 存储基于 leveldb 实现,但是做了优化,因为...”为内容创建页面)
 
 
第3行: 第3行:
 
== localstorage 篇==
 
== localstorage 篇==
  
1. 实现存储功能,主要是实现 include/paxos/storage.h 中的接口。
+
* 实现存储功能,主要是实现 include/paxos/storage.h 中的接口。
2. 存储基于 leveldb 实现,但是做了优化,因为 leveldb 不适合大 value 的写入(compaction 和写放大影响),因此做了优化, value 保存的其实是 FD(文件 id + checksum 等元信息组成的概念),实际是写入 phxpaxos 自己实现的 LogStore 类( log_store.cpp)。
+
* 存储基于 leveldb 实现,但是做了优化,因为 leveldb 不适合大 value 的写入(compaction 和写放大影响),因此做了优化, value 保存的其实是 FD(文件 id + checksum 等元信息组成的概念),实际是写入 phxpaxos 自己实现的 LogStore 类( log_store.cpp)。
3. LogStore 的数据写入要求强制落盘,为了避免 fsync 的低效,它是预先创建固定大小的的文件,然后用 fsyncdata 来更新文件数据,避免二次更新文件元信息来提升效率。
+
* LogStore 的数据写入要求强制落盘,为了避免 fsync 的低效,它是预先创建固定大小的的文件,然后用 fsyncdata 来更新文件数据,避免二次更新文件元信息来提升效率。
4. corfu 的 log store 准备先采用简单方案实现,可能基于 dets 。
+
* corfu 的 log store 准备先采用简单方案实现,可能基于 dets 。

2016年11月24日 (四) 15:32的最后版本


[编辑] 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 。
个人工具
名字空间

变换
操作
导航
工具箱