论文部分内容阅读
随着大数据时代的来临以及互联网技术的飞速发展,分布式架构逐渐受到了各大公司的追捧,但在重构的路上,分布式架构带来的隐患也越来越多:许多错误需要花费大量时间才能准确定位;为了排错,工程师需要登录线上机器的权限,登录相应机器后查看异常日志,无形中拉长了排错的时间;很多莫名其妙的问题最后都被定义成是网络问题。虽然市面上存在一些监控工具,但他们之间不能互通互联,扩展能力也相对不是很强,这就使得查找问题根源成为了一个费时费力而不讨好的工作,这时候,对分布式监控系统的需求就越来越迫切。本文对Google公司的Dapper系统,Twitter公司的Zipkin系统以及阿里巴巴的淘宝鹰眼系统进行研究与相关分析,在此基础上构建了 ETrace系统。本文研究的ETrace系统,是饿了么公司内部使用的分布式链路追踪系统。ETrace系统采用流式计算模型,主要分为Agent、Collector和Shaka三个子模块,利用Kakfa作为流式数据平台,公司各个应用通过调用ETrace系统中Agent模块暴露的API进行埋点操作,将数据发送到Collector模块,并由其转发到Kafka,Shaka系统则对Kafka数据进行消费,利用CEP引擎Esper进行实时或者离线的聚合统计处理,并且以报表的形式展示给用户。通过ETrace系统,当某个应用出现了故障,工程师可以快速定位到症结所在;抑或当某个应用响应时间过长,工程师也可以通过ETrace系统快速找到系统瓶颈所在。整个系统兼具实时处理和离线处理功能,基本满足在不同的场景下用户的需求。