《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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

  • 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:001691

评论

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

云原生消息队列RocketMQ:为什么我们选择 RocketMQ

阿里巴巴云原生

低碳数字城市和区块链:城市-社区-家庭

CECBC

GitHub 近两万 Star,无需编码,可一键生成前后端代码,这个开源项目有点强!

程序员生活志

搭建工具提升DDD开发效率

中原银行

领域驱动设计 DDD 中原银行

缓存的世界 Redis(三)

卢卡多多

redis 6月日更

和12岁小同志搞创客开发:两个控制器之间如何实现通信?

不脱发的程序猿

DIY 单片机 创客 Arduino

5月新品速递:EdgeBoard车型识别软硬一体方案,轻松实现智慧车辆管理

百度大脑

5月盘点 上新

深度 | 字节跳动微服务架构体系演进

字节跳动 微服务 云原生 Service Mesh 服务网格 火山引擎

喜讯 | 拍乐云荣膺「全球云计算大会“云鼎奖”」,先进技术受业界肯定

拍乐云Pano

[译] R8 优化:类常量操作

Antway

6月日更

HTAP | MySQL 到 ClickHouse 的高速公路

RadonDB

MySQL Clickhouse Xenon

来自小姐姐的灵魂拷问:位运算是什么?

前端森林

计算机网络 位运算 React 二进制

问题定位 | XtraBackup 8.0 数据重建避坑事件始末

RadonDB

MySQL Xenon XtraBackup

架构实战营 模块六:学习总结

👈

架构实战营

通用时区:你应该知道的数据库时区知识

华为云开发者联盟

数据库 时区 GaussDB(DWS) 通用时区 夏令时

2021年5月券商App行情刷新及交易体验评测报告

博睿数据

博睿数据 券商App 性能评测

通俗易懂的redis发布订阅原理实现!

李阿柯

面试 消息队列 redis cluster

区块链技术用在影视行业,能保证编剧们不再被抄袭被欠薪吗?

CECBC

数仓分层架构如何设计?

奔向架构师

数据库 数据仓库 数据架构

Flink Job 概览

Alex🐒

flink 翻译 flink1.13

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之文件上传(十)

crudapi

Vue crudapi quasar SPA 文件上传

高可用 | Xenon:后 MHA 时代的选择

RadonDB

MySQL 高可用 Xenon

央行约谈!支付宝发布公告:打击虚拟货币交易!

CECBC

Java高级架构师最新一千道大厂面试真题文字+视频+脑图解析

Java架构追梦

对于后端服务器,框架是怎样的?处理事务的逻辑是怎样的?你了解多少?

奔着腾讯去

c++ io 服务器 信号机制 事件

解Bug之路-ZooKeeper集群拒绝服务

无毁的湖光

Java zookeeper dubbo

大数据分析与运营(三)

soho

「网络安全入门」什么是网络安全

网络安全学海

索信达控股首席科学家张磊:人工智能在银行业的应用

索信达控股

大数据 金融科技 银行 银行数字化转型

AI未来 - 李开复 - 未来8成的工作受影响 - 读后感-John 易筋 ARTS 打卡 Week 52

John(易筋)

ARTS 打卡计划

从零开始学习3D可视化之拾取

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

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