分布式日志收集系统:背景介绍
许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:
(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;
(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;
(3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。
分布式日志收集系统:Facebook Scribe主要内容
(1)Scribe简介及系统架构
(2)Scribe技术架构
(3)Scribe部署结构
(4)Scribe主要功能和使用方案
(5)Scribe的具体应用实例
(6)Scribe的扩展
(7)Scribe研究体会
Scribe简介
Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。 Scribe是基于一个使用非阻断C++(www.cppentry.com)服务器的thrift服务的实现。它能够从各种日志源上收集日志,存储到一个中央存储系统 (可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。
Scribe的系统架构
如上图所示:Scribe从各种数据源上收集数据,放到一个共享队列上,然后push到后端的中央存储系统上。当中央存储系统出现故障时,scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,scribe把本地日志续传到中央存储系统上。
Scribe的技术架构
如上图所示:Scribe服务器底层数据通信框架是Thrift,Thrift也是Facebook开源的,并得到了广泛的使用。也用到了C++(www.cppentry.com)的准标准库boost,主要使用共享指针和文件相关的功能。Thrift也用到了libevent开发库和socket编程(www.cppentry.com)技术。