当前位置: 首页 > article >正文

APM —全链路追踪

全链路追踪目的 

微服务背景下

1.故障快速定位

    跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。

2.各个调用环节的性能分析

   分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化

3.数据分析

   分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。

4.调用拓扑图

Trace系统设计目标

低侵入、低损耗、大范围部署

基本实现

埋点日志内容,通过记录traceId、RPCId、调用的开始时间,调用类型,协议类型,调用方ip和端口,请求的服务名等信息;调用耗时,调用结果,异常信息,消息报文等;

典型应用

非开源:Google的Dapper,淘宝的鹰眼,新浪的Watchman,京东的Hydra

开源:zipkin, pinpoint , skywalking 

应用及分析

1.鼻祖:Google Dapper

谷歌tracing论文,关键字:低损耗、应用透明的、大范围部署需求;大规模集群的跟踪监控系统;跨应用跨服务器;ops-dev;

应用级透明:把核心跟踪代码做的很轻巧,然后把它植入到那些无所不在的公共组件种,比如线程调用、控制流以及RPC库

实现:为服务器上每一次你发送和接收动作来收集跟踪标识符(message identifiers)和时间戳(timestamped events),通过把代码植入限制在一个很小的通用组件库,实现监测系统的应用对开发人员的透明。

Dapper的跟踪模型:

跟踪树和span

ABCDE 5个span 组成了userRequest的跟踪树。Dapper会记录span名称,以及每个span的ID和父ID,以重建在一次追踪过程中不同span之间的关系。如果一个span没有父ID被称为root span。所有span都挂在一个特定的跟踪上,也共用一个跟踪id。所有这些ID用全局唯一的64位整数标示。

一个单独的span的细节图:

注意时间戳的正确性处理:由于客户端和服务器上的时间戳来自不同的主机,我们必须考虑到时间偏差。在我们的分析工具,我们利用了这个事实:RPC客户端发送一个请求之后,服务器端才能接收到,对于响应也是一样的(服务器先响应,然后客户端才能接收到这个响应)。这样一来,服务器端的RPC就有一个时间戳的一个上限和下限。

注:为保护Dapp

http://www.lryc.cn/news/2420712.html

相关文章:

  • 混合密集网络(Mixture Density Networks)
  • 『现学现忘』Git后悔药 — 34、git commit --amend 命令
  • 安卓开发:安卓应用上架主流平台汇总
  • Linux bind函数详解
  • 华为资深工程师带你了解华为七大根技术
  • FastTrack协议
  • 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
  • 详解hashcode(hashcode与equals)
  • HttpClient的post和get请求
  • 高版本msado15.dll编译的程序读取access在低版本系统下报错空指针的问题(错误码:0x80004003)
  • 量子计算之pyQpanda入门实践1
  • 短视频分享网站(源码+开题)
  • h3c Vlan和Trunk实验
  • Java中ArrayList remove会遇到的坑
  • java小程序_Java小程序
  • 解决Apache出现的CPU高占用率的问题
  • 做自媒体,怎么做赚钱?这3点很关键
  • java集成京东联盟且订单绑定自有平台用户代码实现(保证可用)
  • win10卸载CUDA10.0重新安装10.2以及torch1.6-gpu和tf2.2-gpu环境的配置
  • 视达配色教程13 黄色的色彩性格是什么
  • 学习linux的一些网络资源
  • 单射、双射、满射
  • 软件测试人员必备的60个测试工具,果断收藏了!
  • CPU分析系列--sysstat(mpstat+pidstat)分析系统CPU和I/O负载
  • 微软杀毒软件Microsoft Security Essentials试用
  • 什么是ISTQB认证
  • NandFlash驱动源码详细分析
  • javaWeb酒店客房管理系统
  • CAYEE——INS803
  • Keras中Dropout的用法详解