单机:只用考虑本地数据的格式、位置和管理
分布式:须要考虑分布式一致协议中 日志落盘的格式、位置和管理缓存
append引擎的需求app
顾名思义, append引擎指望SSD盘能尽可能把数据一路写下去,也就是物理数据须要顺序落盘,这样能够减少写放大。但为了保证比较好的数据恢复速度,一个磁盘上一般有多个复制组,这些复制组可能同时收到用户写请求数据而要落盘,所以逻辑上的多个复制组的数据是杂乱无序的。分布式
分布式一致性协议的需求ide
典型的分布式一致性协议好比Raft, 在作Log compaction的时候,把以前的全部作过snapshot(索引信息落盘的)log 删调。哪些日志能够删掉呢?能够根据log index 记录。 哪里的日志能够删掉呢? 这就须要记录好不一样复制组内不一样日志在同一个磁盘上的位置。为了防止掉电这些数据还在,这些信息须要持久化。同时为了不反复从磁盘读入,这些信息就须要在内存中缓存一份。设计