LogDevice Concepts and architecture

查看原文

LogDevice 是 Facebook 最近开源的一个分布式服务,用来为日志提供持久存储。它应用的新技术叫做 non-deterministic decentralized record placement, 目标是提供高可用+一致+低 write-latencies 的集群。与普通日志服务不同,LogDevice 的源自单位是 records,也就是一条日志记录。LogDevice 原生支持 SSD 和 HDD。

每条日志都有递增的 LSN(序列号),用于排序。在脑裂的特殊情况下,LogDevice 选择可用性高于一致性。多 writers 可以并发地写日志到同一个地方。这些记录会被复制存储到多台机器去以保证数据不会丢失。就算单节点出故障或者磁盘不够了,整个集群还是可以提供写功能。这个流程 LogDevice 通过集群中运行 sequencer 用于给记录标上 LSN,然后存储到节点上。一批存储同一个记录的节点被称为复制集(copyset)。readers 可以根据随机或者权重挑选 copyset 中的节点把数据取出来重新排序。 节点上存储 records 的数据库叫做 LogsDB,是一个基于 RocksDB (基于 LSM 树的 kv 数据库)的数据库。