写点什么

分布式云应用的导图生成方式比较

  • 2017-07-03
  • 本文字数:1247 字

    阅读完需:约 4 分钟

所谓应用导图,就是分布式应用内部组件的拓扑图,该拓扑图包含了组件连接成的网络和节点间的信息交互。AppDynamics、OpenTracing 以及 Netsil 等工具内部都使用了多种不同的应用导图绘制方法,近期有文章针对这些方法进行了综述。

可以把应用导图看做一个图,组件对应图的节点,而组件间的交互对应图的边。这里说的组件,可以单指进程(同一机器内部) 以及计算实例,或者二者的组合。如果是前者,进程间通信(IPC) 就是图的边,而这种通信又是架构在后者构成的网络之上。应用导图有很多重要特征,例如执行实例分组、提供应用级别的详细信息和错误率等关键度量指标的可视性等。

应用导图之所以重要,主要是因为对内部组件的观测、获取组件的依赖信息等,都离不开应用导图。应用导图可以快速定位问题根因,加快甄别监控和告警中的关键路径,同时,在数据驱动能力规划和潜在的安全问题方面,应用导图也可以发挥作用。

上述的文章总结了具体实践中导图的两种常用制作方法,即静态方法和动态方法,并详述了动态方法。通过追踪各种组件间的请求路径,导图生成软件可以绘制出分布式应用的应用导图。动态跟踪技术包含了端到端跟踪方式和个体跟踪方式。

应用性能管理(APM) 工具和代码仪表盘SDK 等工具都属于端到端(E2E) 跟踪软件,对这类工具来说,要么需要提供本地软件代理,要么能够直接修改远程应用源码,二者必选其一。 AppDynamic Dynatrace 以及 New Relic 通过对代码做 profiling 和跟踪事务处理路径来创建导图。对 APM 工具来说,只要有新技术栈出现,就需要对其增加支持,这对新技术栈的广泛传播带来了较大的挑战。 OpenTracing Datadog APM 以及 AWS X-Ray 这三个工具在发送请求时,会把唯一 ID 和元数据夹裹到请求消息的头部,来搜集组件间的相关性,以协助完成导图的构建。

端到端跟踪方式虽然可以跟踪到请求的精准路径,但代价巨大,因为追踪过程中会产生海量的数据,入侵威胁也会在路径集成时被引入,因为入侵不会影响到性能,所以这种入侵也不易被察觉。但是像 Zipkin 等工具已经专注于分析性能的微小波动了。

个体追踪 (也指 Ingress 和 Egress) 有两类数据源,即日志文件跟踪和系统级跟踪,这两类数据源相比动态方法中的技术栈来说波动较小,较为稳定。由于工作在网络层,个体跟踪技术可以把在网络上通信的组件一一进行绘制,也可以处理那些通过 E2E 方式不能追踪到的组件。但是,这种方法也有弊端,那就是由于其内在的低层次特征,在请求的生命周期内产生的特定数据包的上下文对于这种追踪方式来说并不明显,而且获取上下文的复杂性对于不同的应用软件来说不一样。所以这种方法对经过加密的调用请求无能为力,同时,为了找到数据和上层业务内部事务执行过程之间的相关性,引入深度的包检测机制是非常必要的。

查看英文原文 A Comparison of Mapping Approaches for Distributed Cloud Applications


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-07-03 19:001903

评论

发布
暂无评论
发现更多内容

从实例出发,算力网络到底是如何编排的?

鲸品堂

算力网络

开源密码管理器更安全吗?(1)

神锁离线版

开源 数据安全 密码管理 开源安全 开源软件

百万奖池角逐,华为云IoT边缘带你看懂“边缘计算开发者大赛”

华为云开发者联盟

云计算 物联网 华为云 企业号九月金秋榜

企业知识管理平台在企业中扮演什么样的角色?

Baklib

知识管理

跟着卷卷龙一起学Camera--LensShading

卷卷龙

ISP camera 9月月更

连接与计算无处不在,火山引擎新一代边缘云

火山引擎边缘云

云原生 CDN 边缘计算 火山引擎 边缘云

复享光学发布ZURO系列光谱仪 助力中国半导体产业国产化

硬科技星球

如何守护数据安全? 这里有一份RDS灾备方案为你支招

京东科技开发者

数据库 安全 灾备 主机安全 RDS

开发NFT数字藏品平台:定制搭建NFT系统

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

共探人工智能新发展,AICON 2022 即将重磅开启

极客天地

经验分享|分享搭建在线帮助中心的方法

Baklib

设计模式的艺术 第十九章迭代器设计模式练习(设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用于对数据进行分页处理)

代廉洁

设计模式的艺术

「趣学前端」读取Excel文件内容

叶一一

JavaScript 前端 9月月更

如何用AscendCL的接口开发网络模型推理场景下应用?

华为云开发者联盟

人工智能 企业号九月金秋榜

你还不知道什么是Git?

翼同学

git 开源 版本管理 9月月更

JavaScript 装饰器介绍

掘金安东尼

前端 9月月更

Redis 主从复制演进历程与百度智能云的实践

Baidu AICLOUD

数据库 redis 底层原理

《MySQL自传》

MySQL 数据库 玖章算术 叶正盛 斗佛

低代码开发平台的功能有哪些?低代码“功能清单”一览

优秀

低代码 企业级低代码平台

天呐,我居然可以隔空作画了

华为云开发者联盟

人工智能 华为云 企业号九月金秋榜

别搞Java面试八股文背诵版了! 真卷不动了...

退休的汤姆

Java 程序员 面经 社招 秋招

LeaRun低代码平台 助力中小企业快速开发MES系统

力软低代码开发平台

【git】:有关git的基础指令以及分支概念

翼同学

git 开源 版本管理 9月月更

你真的会使用C语言中的 “ 操作符 ” 吗?

Albert Edison

C语言 开发语言 操作符 9月月更

想了解Python中的super 函数么

华为云开发者联盟

Python 开发 企业号九月金秋榜

MySQL高级

楠羽

笔记 MySQL 数据库 9月月更

首次全面解析云原生成熟度模型:解决企业「诊断难、规划难、选型难」问题

阿里巴巴中间件

阿里云 中间件 成熟度

如何高效解决 C++内存问题,Apache Doris 实践之路|技术解析

SelectDB

c++ 大数据 数据分析 Doris 企业号九月金秋榜

【Git】:SSH公钥配置、远程仓库的基础使用...

翼同学

git 开源 版本管理 9月月更

十问 RocketMQ:十年再出发,到底有何不同?

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

13th 发布在即,一文带你回顾Intel 12th Core

鼎道智联

英特尔 13th处理器 酷睿处理器 12th处理器

分布式云应用的导图生成方式比较_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章