架构师面试(三十五):边缘计算模式监控系统

问题

今天我们聊一下关于监控系统设计的问题。

对于边缘计算模式的监控系统,其客户端部署在服务运行的机器上,即 agent 进程,其数据采集端通过 SDK 方式嵌入在运行的服务中。

对于监控系统【客户端】和【采集端】相关设计的描述中,下面说法正确的有哪几项呢?

A. 采集端与客户端之间通过 TCP 协议传输数据最好,因为 TCP 是可靠的数据传输协议;

B. 监控系统客户端对监控数据进行过滤和聚合,然后再上报服务端,这是监控系统典型的边缘计算模式;

C. 客户端 agent 进程的设计,减少了监控服务端的网络连接数;

D. 采集端实时上报数据到客户端,客户端定时上报数据到服务端,如此设计提升了监控服务的可靠性。

解析

我们先看一下边缘计算模式的监控系统整体架构,如下图:

架构师面试(三十五):边缘计算模式监控系统_第1张图片

在每一台业务服务器上都会部署一个独立的 agent 进程 和 多个业务模块进程(为了充分利用服务器资源,业务进程采用混部方式),监控系统的 SDK 嵌入在业务模块进程中运行。SDK 用来采集所在业务模块的业务监控数据,并实时传输给本机的 agent ;然后 agent 将本地采集到的监控数据聚合后,定时上报到 监控后台系统。因为监控数据基于业务服务器进行了聚合计算,这就是监控系统典型的边缘计算模式。

举一个业务场景的例子:我们在写业务代码时,比如要监控发消息send_msg接口的请求量,可以直接在该接口的入口处调用  SDK 函数 Monitor_Sum("send_msg", 1),此时 SDK 会实时将该接口调用次数 1 发送到本地的 agent 进程;agent 不断累加该接口的调用次数,然后定时将该接口的调用次数上报到 监控后台系统;监控后台系统会将所有的 agent  上报的监控数据再聚合一次(想一下,这里为什么还要再聚合一次?)。

然后我们逐个对选项进行分析:

【A选项】:采集端与客户端之间通过 TCP 协议传输数据最好,因为 TCP 是可靠的数据传输协议;采集端 SDK 和 客户端 agent 都在同一台服务器上运行,虽然 TCP 协议具有较高的可靠性,但用 UDP 协议进行传输是不是效率更高,可靠性也不会受到很大影响;因此采用 UDP 协议传输数据是最好的。

【B选项】:监控系统客户端对监控数据进行过滤和聚合,然后再上报服务端,这是监控系统典型的边缘计算模式;是的,通过业务服务器中 agent 进程的计算在很大程度上会降低中心服务器即监控后台系统的负载,这就是典型的边缘计算模式。

【C选项】:客户端 agent 进程的设计,减少了监控服务端的网络连接数;毕竟 agent 是所有业务模块监控数据的一个 中转站,如果没有 agent,监控服务端将面对所有的业务模块。

【D选项】:采集端实时上报数据到客户端,客户端定时上报数据到服务端,如此设计提升了监控服务的可靠性;首先,同一台机器,多个业务服务通过本地的网络传输(UDP 协议)将实时产生的数据发送给 agent,由 agent 统一上报, 这是从采集数据的网络传输方面的可靠性;然后,agent是定时上报数据的,比如1分钟一次,那么这1分钟采集的数据可以进行批量聚合或汇总,agent 上报的是汇总过的数据, 这是上报数据的可靠性。

参考答案

BCD

关于监控系统的其他计算模式,我们在后续技术短文中进行分析!

你可能感兴趣的:(架构师面试,架构师面试,监控系统,边缘计算模式,监控系统agent,监控系统采集端)