APP下载

基于分布式跟踪的业务调用链监控技术在湖南电信的探索和应用

2020-12-29熊游泳庾玲

电脑知识与技术 2020年32期
关键词:调用业务流程分布式

熊游泳 庾玲

摘要:目前湖南电信的部分业务系统是部署在各种分布式集群之上。一个业务请求有可能由多个服务节点配合完成,在这个业务调用链里,任意一个处理环节出现了问题,都会导致导致业务使用异常。湖南电信基于业界主流的业务调用链监控技术,完成了对计费,自动开通系统的关键业务流程的实时监控,使IT运营人员能及时准确获取业务流程全景信息,实现主动运维,大幅提升了IT运营水平。

关键词:业务调用链;Java Instrumentation;分布式跟踪

中图分类号:TP391        文献标识码:A

文章编号:1009-3044(2020)32-0065-03

1 概述

湖南电信在2017年使用“平台”加“应用”的技术架构,按照“能力与界面分离”“数据与应用分离”“能力可编排”“应用水平弹性可扩展的原则”,建设智慧运营BSS系统。并根据“高内聚,低耦合”原则,将原BSS系统拆分成18个能力服务中心。各服务中心通过能力开放平台进行跨中心能力调用。在新的技术架构下,一个业务请求有可能由多个服务节点配合完成,在这个业务调用链里,任意一个处理环节出现了问题,都会导致业务使用异常。在业务异常发生前,如何迅速判定隐患并迅速解决,在业务异常发生时,如何迅速准确地判断故障点,分析故障原因,成为湖南电信在IT运营中亟待解决的问题。

湖南电信自2019年开始,积极学习探索业界主流的业务调用链监控技术,完成了对计费,自动开通及激活系统的停复机这个对客户感知有重大影响的关键业务流程的实时监控,使IT运营人员能及时准确地获取停复机业务流程全景信息,实现被动运维向主动运维转变,不但提升了IT运营水平,而且改善了用户感知。

2 分布式跟踪概念的提出

Google在2010年发表了一篇名为“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”的论文,介绍了分布式跟踪系统的设计和使用经验。当前业界主流的分布式跟踪系统,如Hydra(京东)、鹰眼Tracing(阿里)基本都是基于Google的这篇论文而开发的。

这些互联网公司为了支撑不断剧增的业务量,一般按照“高内聚,低耦合”的原则拆分各类服务,并通过大规模分布式集群部署。由于每一次的业务请求,均要跨越多个不同的服务节点经过多次的服务调用来完成,所以通过服务跟踪系统实时呈现服务复杂的调用链路,分析调优链路性能,迅速发现诊断处理调用链路故障,就显得尤为重要。

3 分布式跟踪系统的设计目标

分布式跟踪系统的目的是为了将分布式系统中复杂的调用及运行信息提供给开发和运营人员。通常一个 web 查询不仅会被分发给多个服务器,在每一台服务器上完成各自的搜索工作之外,同时可能还会被发送给其他子系统,进行图片查找和拼写检查等处理。处理一次搜索查询,可能需要数十乃至上百台机器,涉及多种服务,其中任意一个部分发生性能问题都可能导致查询超时甚至失败。如果IT运营人员单单只监控查询总耗时这一个指标的话,往往会只知道出问题了,但是无法知道具体是哪个系统或哪个服务出问题以及为什么出问题。首先,IT运营人员并不知道到底调用了哪些服务;其次,可能不同的服务由不同的人员甚至不同的公司开发的,IT运营甚至开发人员都无法了解每个服务的具体实现。

上面描述的场景就对分布式跟踪系统提出了两条最基本的要求:大范围部署和持续的监控。根据这些基本要求提出了四个具体的设计目标:

低消耗,高稳定:只有较小的应用性能影响 ,避免应用开发人员抵触;

低侵入:基本对应用透明;

可扩展性:能根据所监控的系统数目的不断增长,而动态扩展;

快速分析:最好是在几分钟内完成分析,让IT运营人员能迅速对性能异常做出反应。

4 分布式跟踪系统的关键技术

发生一次业务请求后,分布式服务跟踪系统应该记录其所有调用的数据。图1展现了一个包含 5 台服务器的查询服务:

1)服务器 A(接受用户请求的前端服务器);

2)服务器B和C(中间层服务器);

3)服务器D和E(后端服务器)。

前端服务器 A 接收到用户发起的请求RequestX之后,会发送rpc1调用B,发送rpc2调用C。B执行完毕后会立即返回结果, C会发送rpc3和rpc4 分别调用到后端服务器 D 和 E,并在接受DE的结果后,返回结果给 A,A 再回复用户请求的结果。

如上图所示,在分布式跟踪系统中,能够采用一颗RPC跟踪树的形式来展现业务调用关系。

4.1 跟踪树与span

span是RPC跟踪树中的节点。连接span的箭线表示span的父子关系。span中记载了span 的开始和结束时间、RPC 时间数据。图2 描绘了跟踪树中5个span 之间的因果调用关系。

span 中都记载了一个可读的span name、span id和 parent id,这样就能重新构建出分布式跟踪过程中span的调用关系。沒有parent id 的 span被称为 根span。一次特定跟踪的所有相关 span 会共享同一个通用的trace id 。

图3 标示了span id =5的那次 Helper.Call RPC的调用。RPC 库中记录下了 RPC 的计时数据,span 的开始和结束时间。

每一次用户请求, 跟踪系统都生成唯一的TraceId,TraceId 在span间传递,将不同服务的日志重组还原出一个完整的调用链。 此外对于不同业务应用可能还需要有特殊的信息记录到日志中,所以调用链日志信息(Span)应包含如下内容。

4.2 Java Instrumentation

Java SE 5 引入了Instrumentation 功能,该功能使开发者可以创建一个相对独立的agent,用來监控和管理运行在 JVM 上的程序,甚至可以更改应用程序的Java class,从而使开发人员能够实现某些 AOP 的功能。Java SE 6之前,Instrument 需要在程序运行前通过修改参数来设置代理类,JVM在初始化之时(在绝大多数的 Java 类库被载入之前),instrumentation 的设置已经启动,并在JVM中设置了回调函数,检测特定类的加载情况,从而完成相应的处理。在Java SE 6中,能够在程序启动后的运行过程中动态地加载代理类,进一步扩展了instrumentation 的使用场景。

由于湖南电信几乎所有的业务系统都是用Java开发的,因此在分布式跟踪系统的开发过程中使用了Java Instrumentation特性,实现对现有业务系统低侵入以及对应用透明的跟踪及监控。

5 “鹰眼”业务调用链监控系统在湖南电信的应用

湖南电信基于分布式跟踪技术的业务调用链监控系统叫“鹰眼”, 由采集端,实时分析端与数据提取转换展示端三个大的部分组成。其中采集端通过JVM的基础运行机制,对业务数据进行实时提取;实时分析端通过对采集而来的业务执行数据流进行流式分析,并依格式存储业务分析后的数据,调用链数据等;通过展示树状态调用链的信息,提供关键信息快速定位能力。仅需业务应用人员提供对应的代码包结构,共同分析哪些包哪些类需要织入调用链中,输出内容为是系统及业务调用链工具的配置信息,对业务代码本身不产生任何影响与入侵。系统总体部署架构如图5所示。

“鹰眼”利用了Java Instrumentation功能,在业务代码运行加载的阶段,向业务源代码编译后的字节码中注入鹰眼的业务逻辑,并输出要监控的业务数据或对业务逻辑进行增强,其本质就是变更业务代码。其实现方式如图6所示。

湖南电信”鹰眼”系统初期主要实现了对用户感知影响巨大的停复机业务流程的业务调用链监控。

停复机业务流程由计费中心发起,计费中心通过用户的缴费与扣费动作,判断是否需要触发停机,复机流程。满足条件的用户。计费中心创建停复机工单、并插入到激活系统的工单接口表里,激活系统接收到计费中心发送的工单后,根据工单业务类型、用户信息,生成需要与网元系统交互的工单信息(子单),待网元系统子单都处理完毕后,停复机流程结束。停复机业务流程及业务监控数据如图7所示。

”鹰眼”系统第一次使我们实时准确地掌握了停复机流程中每一个环节的业务运行数据,在停复机发生故障时能迅速准确地判断定位故障环节,进行故障处理,大幅度减少了故障处理时间。同时,通过对各环节积压量进行监控,在异常时进行及时告警,在影响用户感知前及时处理解决,也大幅提升了用户感知。

6 结论

为了满足湖南电信新的分布式技术架构下业务系统更精确更细粒度的监控的需要,不断提升IT运营水平,我们积极探索与借鉴业界主流的基于分布式跟踪的业务调用链监控技术,初步建成了“鹰眼”业务调用链监控系统,实现了对停复机关键业务流程的各环节的实时业务数据监控。 使IT运营人员及开发人员第一次及时准确地获取了业务流程全景信息,对于实现主动运维、加速故障处理、改善用户感知有着非常重大的作用和意义。

参考文献:

[1] Google. Dapper, a Large-Scale Distributed Systems Tracing Infrastructure.

【通联编辑:王力】

猜你喜欢

调用业务流程分布式
RPA机器人助业务流程智能化
核电项目物项调用管理的应用研究
STK业务流程优化的探究
LabWindows/CVI下基于ActiveX技术的Excel调用
企业财务管理、业务流程管理中整合ERP之探索
基于财务业务流程再造的ERP信息系统构建探析
基于系统调用的恶意软件检测技术研究
基于DDS的分布式三维协同仿真研究
西门子 分布式I/O Simatic ET 200AL
利用RFC技术实现SAP系统接口通信