写点什么

Facebook 开源分布式日志存储系统 LogDevice

  • 2018-10-08
  • 本文字数:1096 字

    阅读完需:约 4 分钟

Facebook开源了他们的内部分布式日志存储项目LogDevice。它通过复制、持久日志存储和故障恢复实现写入高可用性。

Facebook 的大多数需要记录日志应用程序都需要写入高可用性、持久的日志存储以及在性能和延迟方面要求各不相同的工作负载。另一个非常重要的要求是能够承受硬件故障。Facebook 有一个叫作 Scribe 的旧项目侧重于将日志聚合到集中式存储中,但这种方案存在数据丢失的情况。Scribe 现在使用 LogDevice 作为日志存储后端。

Facebook 将 LogDevice 用在数据中心内部的流式处理管道、数据库索引更新的发布、机器学习管道、复制管道和持久任务队列(每秒摄取超过 1TB 的数据)中。尽管 Facebook 已经构建了很多用于管理 LogDevice 集群的开源工具,但还没有将它们开源出来,除了一些基本的工具集。 LDShell 工具可用于从命令行管理集群,并且可以使用 LDQuery 命令来查看集群统计信息。

LogDevice 使用“日志记录”抽象来划分单个日志事件,为每个记录分配一个称为日志序列号(LSN)的唯一 ID。LSN 由“Sequencer”组件基于时间点生成,而时间点保存在 ZooKeeper 中。LogDevice 只能以追加的模式写入记录,也就是说,一旦写入记录就无法修改。与大多数日志存储系统一样,LogDevice 会“修剪”记录,即基于时间或空间策略的日志轮换。它还可以按需进行日志修剪。除此之外,对日志的存储时间没有限制。

LogDevice 通过在不同的计算机节点上存储每个日志记录的多个副本来实现高可用性,尤其是写入高可用性。每条记录可以跨20-30 个存储节点复制。不过,如果某些具有某条日志副本的计算机速度很慢或不可用,那么该日志写入次数的增加会限制吞吐量。LogDevice 可以自动检测哪些节点已失效,并不再往这些节点写入新记录。它试图通过尽可能多的复制尽减少硬件故障的影响,并尽可能快地“重建”丢失的副本。在重建过程中,“可以以每秒5-10GB 的速率进行恢复”。LogDevice 底层存储基于RocksDB,它也是由Facebook 开源的一个键值存储系统。

LogDevice 团队还必须应对其他挑战,他们发现,LogDevice 的用户会执行回填(backfill),请求几个小时或几天内的旧数据。这些请求由使用 LogDevice 日志的下游服务发出,当这些服务从故障中恢复并重新处理日志时就会发生回填。LogDevice 通过在“节点集”之间分摊读取负载来应对这些读取高峰。

LogDevice 可以与 Apache BookKeeper Apache Kafka 等其他日志存储系统进行对比。其中与 Kafka 的主要区别似乎是LogDevice 将计算和存储进行了分离,主要是为了应对Facebook 规模的日志。LogDevice 是用C++ 开发的,并托管在 GitHub 上。

查看英文原文 Facebook Open Sources LogDevice - a Distributed Data Store for Log Storage

2018-10-08 10:231835
用户头像

发布了 731 篇内容, 共 451.8 次阅读, 收获喜欢 2002 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

2021最新一次Java面试,快手三面一轮游,如今已拿意向书

爱好编程进阶

Java 面试 后端开发

浅析Redis分布式集群倾斜问题

五分钟学大数据

redis 4月月更

在一个元素为 1 到 100 的整数数组中,如何搜索缺失元素?

InfoQ IT百科

在没有递归的情况下如何反转单链表?

InfoQ IT百科

如何使用堆栈算出两个链表的总和?

InfoQ IT百科

一个完整的计算机系统是由什么组成的?

InfoQ IT百科

1000页神仙文档,连阿里P8面试官都说太详细了,面面俱到!搞懂这些直接P6+

爱好编程进阶

Java 面试 后端开发

Authing 正式加入 W3C 组织,将参与相关国际标准制定

Authing

开发者 云原生 API Idaas W3C

线程和进程有什么区别?

InfoQ IT百科

如何在没有递归的情况下通过对给定二叉树执行中序遍历来打印所有节点?

InfoQ IT百科

线程的定义是什么?

InfoQ IT百科

将博客搬至CSDN

爱好编程进阶

3 个方法,教你提升程序员的自我价值

爱好编程进阶

Java 面试 后端开发

1000道阿里巴巴初级~高级Java工程师面试题(含答案

爱好编程进阶

Java 面试 后端开发

为什么计算机启动最开始的时候执行的是BIOS代码而不是操作系统自身的 代码?

InfoQ IT百科

java培训Redis的库存扣减操作

@零度

redis JAVA开发

未来十年,什么开发工程师最火爆?

TinTinLand

区块链

35K成功入职蚂蚁金服,现分享面试Java后端经历「内含面试题

爱好编程进阶

Java 面试 后端开发

5年crud“经验”

爱好编程进阶

Java 面试 后端开发

axios发送post请求,springMVC接收不到数据问题

爱好编程进阶

Java 面试 后端开发

大数据培训flink中核心设计、抽象和线程模型

@零度

flink Netty 大数据开发

乙巳篇 天、地、人三才立 《「內元宇宙」聯載》

因田木

中庸

给定一个乱序数组,如何搜索最大和最小元素?

InfoQ IT百科

2021年阿里、腾讯、百度

爱好编程进阶

Java 面试 后端开发

2021最新Java面试标准,26个技术点一千多道面试题全曝光,赶紧学

爱好编程进阶

Java 面试 后端开发

GPU微架构回顾

Finovy Cloud

GPU服务器 GPU算力

Activiti 自定义表单流程(全流程演示)

爱好编程进阶

Java 面试 后端开发

如何在给定数组中执行二元搜索?

InfoQ IT百科

分享15款免费好用的中文字体

源字节1号

网站开发

在不使用任何库的情况下,如何反转给定句子中的单词?

InfoQ IT百科

162基于springboot宠物管理系统

爱好编程进阶

Java 面试 后端开发

Facebook开源分布式日志存储系统LogDevice_Meta_Hrishikesh Barua_InfoQ精选文章