踏浪无痕 岂安科技高级架构师
十余年数据研发经验,擅长数据处理领域工作,如爬虫、搜索引擎、大数据应用高并发等。担任过架构师,研发经理等岗位。曾主导开发过大型爬虫,搜索引擎及大数据广告DMP系统目前负责岂安科技数据平台开发与搭建。
项目背景
公司项目需要将分布在多台机器中的日志统一收集管理。笔者先后使用logstash,flume等开源项目。并最终自研一套基于Java语言的日志收集系统 Bloodhound。以下从项目关注的角度对开源系统与自研进行分析。
Logstash 和 Flume 都是很成熟的日志收集平台,结构清晰,插件丰富,文档简明易懂,示例代码非常多。其中Logstash 侧重对字段的预处理,Flume 侧重不同的网络拓扑中日志的传递,通过Agent打通各个网络结点。
公司的开发团队主要集中在 Java,Python。而 Logstash 的插件使用 Ruby,从团队角度,不太具备扩展性。在使用 logstash 增加一个插件比较痛苦,同时几个月使用下来,感觉性能偏低,启动时较慢。
➦ Flume性能相对比较低,主要有以下几点:
① 单线程。
Flume 每个 Agent 分为 source,channel,sink 等插件。每个插件都只启用单线程处理。如果任务是写数据库等 IO 操作,性能必然会被拖累。