APP下载

基于分布式微服务全链路实时监控系统开发与应用

2024-10-29杜辉任建新刘峰赵政

中国新通信 2024年18期

摘要:本文针对全链路业务监测平台——Message-Box-Tracing进行总体设计和开发,并提出监测和检测微型博客的分散服务系统。通过开发者、测试者、运营者三方的协作,对分布式微服务全链路实时监控系统进行联合检测,最大限度地降低因发现错误带来的人力物力、时间与能量的耗费,在此基础上,根据软件发展的有关原理,从工程角度对系统的作用和组成进行说明,并对如何实现此系统进行论述。

关键词:分布式;全链路;实时监控;微服务

一、引言

目前所有网络公司均有独立的全链路监测技术,谷歌在2005年就发布全链路监测技术,并完成了全链路监测系统原型。此后,各网络企业纷纷借鉴谷歌对全链路监测的开放源码理念和开发原型,逐渐向企业系统开展全链路的业务拓展。淘宝的“双十一”堪称网络并发奇迹,全链路监测是该平台得以适时保障、为企业创造丰厚利润的重要保障。腾讯、百度等企业也通过自身全方位的监测手段,始终确保体系的平稳、秩序以及使用者的顺畅使用。

二、需求分析

(一)功能性需求

1.客户端探针需求分析

客户端探测系统是对各部门商业系统起到重要的功能,它的功能是生成各种不同商业系统之间的数据流链路,在服务发生行动时,可以通过嵌入的方式生成相应的链接数据,并对其进行分析。

(1)在调用链路的上行,要求信号信道截取程序对原来的请求进行拦截。

(2)请求信道筛选器首先要确定该请求的种类,根据要求进行响应,组合链接索引[1]。

(3)接收的信息通道将会产生一个新的线程进行监听,如果被要求接收的服务过程中出现不正常的行为,或者发出不正常的举动,则会被侦听到,并做出相应的回应。

(4)一个应答信道截取程序将在链接的下游截获最初的应答。

(5)所述应答通道滤波器在收到所述应答后,将找到所述链接结构的所述请求的发送时间。

在全链路用户探测系统中,通过对用户探测系统的使用实例进行研究,可以了解各层次用户需要满足的要求。基于数据流程图进行分析,能够判断系统功能,该过程中,信号侦听器将截取来自上行业务的最初要求,并且产生一个要求定单,将这个定单传送到信道滤波器[2]。

首先,通过获取用户的指令,建立一个分布式跟踪ID,以确保其在网络中的独特性。

其次,将用户的请求数量、业务数据以及索引结构跟踪ID相融合,形成一份索引指令,并保留下来,同时生成一个监听程序,用于监视业务动向,如果发生意外,则会将其添加到索引指令中,作为备份。如果一个下行的服务已经执行完毕,则应答截取程序就会截取这些应答,然后将这些消息抽取到一个新的命令中,最终分发程序会执行两项操作,一是向全链路服务器传送指标,二是将具有特定指标的应答返回到上层。

要向链路体系递交的最终定单就是含有目前链接的全部资讯的指数定单。从收到一个要求的瞬间,就会将一个索引命令组合起来,在截取一个请求的同时,将其添加到上面的要求中,再产生一个全球唯一的ID:Trace-ID,这个ID与后续的检索中的ID是一样的。通常来说,要对此链接进行查询的工作人员,例如程序开发者、商业系统测试者、运营人员,均可以有选择地将应答的Trace-id进行存储,供日后参考[3]。侦听器被激活后将上游和下游的系统的运行状况都记录下来,最终下游的系统完成后,这个指标指令也会被添加到相应的信息中,此指标信息如下:

①对报头的要求;

②所述状态代码的回传;

③整体上的独立唯一跟踪标识符;

④对下游的体系进行不正常处理。

接着对用户探头进行函数划分,其中用户探测系统可划分为三个部分:请求处理通道、行为监听通道以及应答过程通道。例如:

(1)要求处理通道会对上行的数据要求进行截获,并确定是哪种请求,相应地针对每一种要求,都会为其创建相应的索引,在生成索引指令的同时,会生成一个分布的跟踪标识符,以确保在分布的系统中,目前所产生的标识符具有全球唯一性,确保没有发生任何碰撞。此时,使用的装配机构会将请求的标题、请求的数据以及全局唯一跟踪标识符进行打包,并加以存储。最终,在原来的要求外,将链接的资讯加入要求标头,开始侦听[4]。

(2)侦听程序:从一个请求的线程中分离出一个单独的、活跃的服务,其作用是监听一个具有链接的请求的活动路径,在路径上注意是否有任何不正常的举动,并且要时刻准备将数据送回来,如果出现不可控制的状况,则会立即将异常消息和终止监听;

(3)应答处理通道会截取下行通信完成后的应答,并收集通信流中的诸如应答状况代码、应答数据等信息,并将请求线程生成的所述指标指令从目前存储器中提取出来,并添加到指令中,向整个链路监测服务器发送响应,并向节点提供指标应答。

(二)全链路监控服务端前端机需求分析

1.前端机需求

全链路监测服务端的作用相当于人类与系统之间的一座桥梁,其主要的作用是对权限进行管理,无论是维护还是测试,或者开发者,他们都有自己的工作,他们也只有对承担的工程进行检查,从而确保资源的隐秘性和隔离性。该过程中要将商业之间的相互依存性展示出来,而上游和下游之间的联系,则可以让观众清楚地看到商业的逻辑操作是如何进行的,也能看到一条服务线路包括的全链路上各链接的资讯,让观众了解该商业链接中哪些地方发生问题,从而提升查找问题的速度。

前端设备除了可以看到全链路外,还可以完成链接的数据采集,用户发出一个链接时,前端机可以将链接数据集中起来,将其传送至数据中心进行存储。该系统也必须具有自我探测能力,能够自我检验其他设备是否在运转[5]。

(1)对用户的访问权限进行管理和监控,管理员可以设置全局权限,当用户登录时,将会产生资源隔离。

(2)查看关于本人的所有业务依赖,可以查看关于自己的业务,以及上下游调用关系,明确数据流向。

(3)检查某一服务的全部链接,该服务随时接收该服务的请求,通过查询该服务的全部链路,可以看到该服务特定的要求,以及每一个请求的详细内容。

(4)检查链接中的详细链接来自客户机,包括特定链接的上游请求时间、请求状态、下游服务呼叫,有无出现任何异常,以及应答状态。

(5)采集用户发来的链接,用户将连接到的链接数据组合为一个包含全局唯一跟踪标识的索引,然后将该标识进行汇总,然后将该标识转发到消息中间件,

(6)心跳探测,该业务端的前端机将心跳信息分组传输到其他诸如队列机器、存储器等终端,以确定另一方的生命状况。

2.非功能性需求

所谓的“非功能要求”,就是为了满足使用者的商业需要,需要具备的特征。商业运作时,除了正常状态下,还应注意异常事件。例如,当数据流量急剧增加时,数据有可能失去,这并非因为偶然损失,而是因为使用保险丝,故意损失一部分的数据,以确保系统的正常运转。当大量数据出现时,线程应用也要格外注意,假设这个服务仍然存在一个下行流,则必须设置多层缓冲,以避免将一个OPS填得满满当当或者中断停机。这种情况下,CPU负荷会变得非常高。所以,有必要清楚地定量非功能要求。

三、监控系统设计与实现

(一)全链路客户端探针

1. Http客户端探针

根据客户发送基础原则,可以将其划分为HttpClient Handler和HttpServerHandler,都从相同的HttpHandler类中继承,其中包括探测跟踪、发送链接的数据、Sampler抽样、Parser类,将Span资料插入请求,adapter功能是对当前计算机IP以及系统所用端口进行写入,发送前要经handleSend功能装配Span,在Span结构中还有一种枚举类型Kind,可以确定此枚举的某个类型,并根据抽样速率判定,如果确定要抽样,则首先查找线程内有无Span或者新的Span,将Span数据放入request后再转发。如果另一个服务提供应答,则会通过handlerReciver功能,将所有应答信息和状态代码提取出来,然后将这些信息重新组合成一个完整的Span[6]。

2. GRPC客户端探针

GRPC探测器的一个类别依赖性图表,与其他RPC类似,例如Dubbo、Motan,其中GRPC非常有效。所以,以GRPC为例,分析其如何使用链接数据探测技术。首先,这一探测中,同样是一个有环的服务呼叫就会有两个处理程序,像Http一样,但此处是一个拦截者。这两类一个是Grpc客户端接口,一个是Grpc客户端接口,其结构与基础结构相似,首先构建Tracer,经Sampler抽样验证,获取局部线程构建Span;其次,引入一个用于侦听RPC的应答,并根据应答进行操作,并将定制的回调功能添加至该类中,一旦收到RPC反应,就会被调用。类似于GrpcServerIntercepter的函数遵循服务器的基础环函数,将请求RPC的资料构建成Span,然后放至本机线程内。

(二)全链路监控服务端前端机

1.权限控制

用户访问权限是用户访问网络的关键,是防止用户违规操作的关键,也是提高用户工作效率的根本措施。将SpringSecurity用于许可管理架构中,采用该框架是出于以下原因:

首先,与Spring是一个高度融合的架构,在Spring架构基础上,使用SpringSecurity进行融合。

其次,部分具有较强整合的控制许可方法,其中有概要控制、数据库控制、TAuth和OAuth控制、本文采用的单一登录CAS控制。

最后,其控制颗粒小,可以满足各种需要,还可以通过一个较高层次的过滤链条完成。只有当使用者检视资讯时,才会使用特权控制。

2.链路数据收集

链路采集则是对用户探头发出的链接信息进行采集。在向前置器发送链路的数据时,客户先对该数据的合法性进行判定,该判定的先决条件如下:

首先,该客户对该标识比特进行序列化链路的同时,将在该标识比特中增加4个比特的二进制,该接收过程中,4个标志比特满足该条件,如果满足该条件,则对该4个标志比特进行解压缩、译码,获得的是一个实例的链路径,将该调用的结果加到一个调用函数中,根据采集的结果执行。

其次,通过抽样速率验证服务器,验证是否可以采集所需数据,向信息中介机构传送链路地址进行回调。采集链路时,会出现大量线程,给每一个线程设定5分钟时限,一般以秒量级速度进行。

(三)监控系统测试

全链路监测系统中,用户端是全链路数据传输中关键的一环,因为各部门对各种服务的实施方法不尽相同,所以对探头也适用于各种情况。表1显示Dubbo探测器对阿里巴巴RPC的测试案例。

四、结束语

综上所述,实时监控系统在一定程度上满足了基于分布式网络的实时监测任务,但受时间、人员等因素的限制,某些功能还有待改进,并不断进行改进。此外,程序上尚有一定的改进空间。与此同时,网页也需要改进,以提升使用者的感受。研发系统时,也意识到技能水平还存在缺陷,只有通过不断学习,才能够获取更多的信息,从而扩大眼界,提高实力。

作者单位:杜辉 任建新 刘峰 赵政 中铁云网信息科技有限公司

杜辉(1978-),男,山东肥城,硕士,工程师,研究方向:信息化。

参考文献

[1]黄涛,高丽婷.基于Spark的实时数据采集与处理[J].河北建筑工程学院学报,2022,40(04):176-179+188.

[2]张明杰,张才俊,江帆,张波,杨照辉.面向指标体系的业务运营实时监控系统[J].计算机时代,2022,(06):62-65+70.

[3]张卫星.智能分布式馈线的自动化系统分析[J].集成电路应用,2021,38(11):84-85.

[4]米亮.分布式码流实时监控与录制系统的设计与实现[J].电视技术,2021,45(08):140-142.

[5]郭文鑫,王海柱,赵瑞锋,刘洋,王可.分布式实时资源数据采集装置的设计[J].自动化技术与应用,2021,40(07):30-32+41.

[6]庄清霖.基于ZigBee协议的分布式光伏电站运行数据实时监控系统[J].农村电气化,2021,(07):57-59.