揭秘小米内部的数据收集利器
往期文章回顾:万亿级消息背后: 小米消息队列的实践
背景概述
小米内部各业务每天会产生大量数据,有的是实时产生用于计算,有的落盘写入日志文件待后续分析,还有写入MySQL数据库。为了更好更快的将数据同步到Hadoop相关平台存储和计算,对于MySQL的数据,前面文章《Mysql数据实时同步实践》很好的解决了此类场景,而对于前两种情况,需要一套统一的数据收集解决方案来实现业务数据与后端Hadoop平台的连接,AgentSource则很好的做到了这一点。
AgentSource作为Talos Platform中使用广泛且非常重要的数据收集方式,当前已支持6种接入方式,TalosPlatform中注册topic数在1W6左右,其中使用AgentSource作为数据收集接入方式的占80%左右,日均接入数据达万亿条规模,其核心LCSAgent已在公司2W+ 台机器上进行部署。
AgentSource通过在每台机器上部署一个LCSAgent实例,实现数据的收集等需求。其支持的数据收集方式主要有:Thrift传输,文件传输,Scribe传输,HTTP传输,TailDir传输和OceanDir传输。
Thrift传输,文件传输,Scribe传输是官方提供的客户端打点SDK,用于实现发送数据到LCSAgent,提供数据缓存,Metric收集等高级功能。
对于Http传输,TailDir传输和OceanDir传输,需要依赖相关的协议进行自行扩展。
HTTP传输即支持HTTP协议的数据收集。
TailDir传输支持本地多级目录多文件的扫描收集。
OceanDir传输是在公司Ocean弹性调度平台上支持收集容器内文件的扫描采集。
AgentSource详细介绍
我们来详细介绍下AgentSource的相关内容,首先我们了解下TalosPlatform数据流整体流程架构: