论文部分内容阅读
微博消息箱全链路服务监控系统Message-Box-Tracing是一款用于发现故障的系统产品。全链路代表所有的系统服务,相互连接,传递数据而形成的网状布局。当分布式系统发展得越来越迅猛,单个的系统需要有多台独立功能模块的机器来支撑,甚至每个功能模块需要有多台同样的机器来维持其稳定性。当一个系统已经不再是单机,不能再以一台机器来维持其运作,取而代之的是多台物理机器共同维持一个系统的稳定运行。最原始的查找方式只能依靠人工,从表现的地方开始逐一排查,直到找到源头。在这种情况下,多少开发人员的时间和精力都被无谓地浪费在排查故障当中。为了改善这一现状,本人所在的部门决定开发出这款全链路监控产品,用机器代替人,排查系统链路当中发生故障的机器,以及发生故障的原因。本文主要研究关于这款全链路服务监控系统Message-Box-Tracing的整体设计与实现。这是一款用于监控并发现微博分布式服务系统故障的系统。开发人员、测试人员和运维人员都可以使用,共同排查分布式微服务中隐藏的故障,尽可能地减少查找故障带来的人力、物力,时间和精力的消耗,提高各类服务人员的工作效率。该系统的设计依据软件开发相关理论,从工程化的视角阐述系统的功能及构成。本文讨论的重点是为什么要制作这个系统且怎么做这个系统。文章由浅入深,逐步研究该工程带来的影响以及产生的意义。当业务发展到机器相互连结,信息交互错综复杂后,形成了复杂的信息全链路,每天都会产生TB级的数据,产生故障不易发现,因此需要制作一个用于全链路跟踪监控的服务发现故障,减少人力物力的成本。系统需求要满足不同的业务组件数据都能被捕获,需要针对不同组件构造捕获装置,需要承受每秒百万级别的数据流,需要近实时的数据查询。首先根据Google的论文Dapper设计了链路数据流的数据结构Span,根据业务的差异,封装业务客户端的探针。同时制作了服务端接收这些探针发送的链路信息并存储。最后再组装成每一条完整的链路数据进行展示。客户端是每个业务服务的探针,连接着其他节点,让这张虚拟的网可视化,通过探针和接收器,展现了服务的上下游依赖关系,前后联系。使得抽象的网络服务具备了可跟踪监控的依据。而服务端就像信号塔,收集着探针信号的行走轨迹,此时在什么位置,遇到了什么困难也一并了解,让故障问题暴露在监控画面,实时定位故障。