Tebis: Index Shipping for Efficient Replication in LSM Key-Value(2)
为了提供可靠性和可用性,最先进的KV存储系统在多个(通常是两个或三个)节点中复制KV对。当前的设计通过执行昂贵的合并来重新组织主节点和备份节点中的数据,以确保:(a)通过只在节点之间移动用户数据来最小化网络流量,(b)通过只执行大I/ Os来顺序设备访问。但是,这种方法在读取I/O流量、CPU利用率和备份时的内存使用方面有显著的增加。考虑到所有节点同时充当主节点和备份节点,这种方法最终会损害系统的整体性能。在我们的工作中,我们依赖于两个观察结果:1)数据中心对RDMA使用的增加,在CPU利用率较低的情况下增加了可用吞吐量。这使得用网络流量交换CPU和设备I/O是可行的。2)在最先进的KV存储中使用KV分离,根据KV对的大小,减少了索引的大小。
不同于将值和键存储在LSM树中,KV分离将值存储在单独的日志中,并使用额外的元数据指向值日志。这种技术通过引入小的随机读I/O将I/O放大幅度降低了10倍,这对快速存储设备没有那么大的危害。此外,最近的工作显著改善了KV分离的垃圾收集开销。
在本文中,我们设计并实现了Tebis,一个高效的基于lsm的复制KV存储系统。Tebis的主要新奇之处在于,它通过从主服务器传送一个预构建的索引来减少备份的合并开销。该方法减少了备份节点的读I/O扩增、CPU开销和内存利用率。
Tebis的设计解决了一个主要的和两个次要的挑战。主要的挑战是备份节点上索引的高效重写机制:备份节点上收到的索引包含主节点上设备的段偏移量。Tebis在对齐的主段和备份段之间创建映射。然后,它利用这些映射高效地重写备份中的设备位置。