Scribe介绍

Scribe介绍

目录

  • 是什么
  • 功能
  • 案例
  • 用法
  • 局限
  • 其他

是什么

  1. 可扩展的分布式日志框架
    • 框架(framework)而非系统。
    • Scribe = Scribe服务器 + Scribe API
  2. 可扩展
    • 节点可以执行逻辑操作(记录日志)或者转发请求。类似Nginx
  3. 分布式
  4. 无状态

功能

独立于应用系统和分析系统的日志收集服务器

  • Scribe从各种数据源上收集数据,放到共享队列上,然后push到后端的中央存储系统上。当中央存储系统出现故障时,scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,scribe把本地日志续传到中央存储系统上。

良好的水平扩展性能

  • 支持多种编程语言,使用Thrift
  • 高性能、低消耗,使用Libevent
  • 多种存储格式
  • 支持HFDS
  • 可以与应用集成
  • 灵活的日志缓存大小
  • 多线程/消息队列

转发写日志请求

  • 日志分类
  • 日志过滤,category

案例

Facebook日志收集

  • 上百种日志分类
  • 10000+ Scribe节点
  • 每秒1000000条日志
  • 每天10000000000条日志

Twitter的Rainbird系统

  • 统计网站中每个页面的点击次数
  • 统计内部监控数据,Scribe用于收集这些数据
  • 存储到HDFS中
  • 数据源:JavaScript, RoR,
  • Scala, ...
  • 数据量:7 TB/day

测试

  • 每条日志1K
  • 3台机器同时发送,每台机器循环发送40万条
  • 耗时最多的机器用了298秒
  • 1.31M/s
  • 0.000745s/K

用法

Python

category='test'
message='hello world'
log_entry = scribe.LogEntry(category, message)
socket = TSocket.TSocket(host='localhost', port=1456)
transport = TTransport.TFramedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(trans=transport, strictRead=False, strictWrite=False)
client = scribe.Client(iprot=protocol, oprot=protocol)
transport.open()
result = client.Log(messages=[log_entry])
transport.close()

PHP

$msg1['category'] = 'hello';
$msg1['message'] = 'world';
$entry1 = new LogEntry($msg1);
$messages = array($entry1);
$socket = new TSocket('183.61.6.104', 1463, true);
$transport = new TFramedTransport($socket);
$protocol = new TBinaryProtocol($transport, false, false);
$scribe_client = new scribeClient($protocol, $protocol);
$transport->open();
$exit_code = $scribe_client->Log($messages);
$transport->close();

局限

  • 偏向于收集应用层日志
  • 无法收集历史数据
  • 日志切分是可能发生日志丢失
  • 单点问题

其他

设计服务

  • 逻辑处理+请求转发 Nginx Scribe
  • 无状态 == 水平扩展性
  • Create a service iff required
  • Create a common framework and toolset that will allow for easier creation of services
  • Use the right language, library and tool for the task

修订记录

  1. 2017年06月21日 由PPT修改而来。

转载于:https://my.oschina.net/u/131191/blog/994845

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值