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

【架构师】跟我一起学架构——调用链

博客昵称:架构师Cool
最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。
作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟!
博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助
百万笔记知识库, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!
欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

调用链

      • 调用链
        • skywalking优势
        • 基本原理
        • 接入
        • 分析
        • 页面UI展示
        • 数据存储

调用链

微服务是一个分布式非常复杂系统,如果没有一套调用链监控,如果服务之间依赖出现问题就很难进行调位。

目前个大主流互联网公司中,ali有非常出现的鹰眼系统,点评也有一套很出名的调用链监控系统CAT。调用链监控其实最早是google提出来的,2010年google发表了一篇调用链的论文,论文以它内部的调用链系统dapper命名,这个论文中讲解调用链在google使用的经验和原理,大致的原理如下图:

在这里插入图片描述

在外界对微服务进行一个请求开始进入我们的微服务体系时,会生成一个Root Span,当web服务去调用后面的服务svc1时又会生成一个span,调用DB也会生成一个span,每一个应用调度都会生成一个新的span,这个是span是整个调用链形成的关键,span中有一些关键的信息,有traceId,spanId。RootSpan是比较特殊的,在启动的时候会生成spanId还会生成TraceId,其他的span会生成自己的spanId,为了维护好调用链上下文的调用关系,span会去记录调用它的链路,以parent spanId记录下来,这样的话父子之间的关系就可以记录下来,每个调用都会把第一个链路traceId也记录下来,这样,当我们把这些span都存在起来,就可以通过分析手段,把整个调用链的关系还原出来。

这里可以采用ELK的方式去记录和展示调用链监控日志,当我们一条调用为一行记录存储下来:

在这里插入图片描述

通过traceId 和 parentSpanId 就可以串联起来为一个整体的链路,并可以从这个链路去分析错误或者调用延时和调用次数等等。

在这里插入图片描述

目前市面主流的调用链选型有 zipkin,pinpoint,cat,skywalking,他们之间各有一些偏重点,值得一说的是skywalking国人出品的一款新的调用链工具,采用开源的基于字节码注入的调用链分析,接入段无代码入侵,而且开源支持多种插件,UI在几款工具来说比较功能比较强大,而且ui也比较赏心悦目,目前已经加入了apache孵化器。

skywalking优势

  • 首先在实现方式上,skywalking基本对于代码做到了无入侵,采用java探针和字节码增强的方式,而在cat还采用了代码埋点,而zipkin采用了拦截请求,pinpoint也是使用java探针和字节码增强
  • 其次在分析的颗粒度上,skywaling是方法级,而zipkin是接口级,其他两款也是方法级
  • 在数据存储上,skywalking可以采用日志体系中比较出名的ES,其他几款,zipkin也可以使用ES,pinpoint使用Hbase,cat使用mysql或HDFS,相对复杂,如果公司对ES熟悉的人才比较有保证,选择熟悉存储方案也是考虑技术选型的重点
  • 还有就是性能影响,根据网上的一些性能报告,虽然未必百分百准备,但也具备参考价值,skywalking的探针对吞吐量的影响在4者中间是最效的,经过对skywalking的一些压测也大致证明

下面是网上摘录的几款调用链选型对比:

基本原理

类别ZipkinPinpointSkyWalking CAT
实现方式拦截请求,发送(HTTP,mq)数据至zipkin服务java探针,字节码增强java探针,字节码增强

接入

类别ZipkinPinpointSkyWalkingCAT
接入方式」基于linkerd或者sleuth方式,引入配置即可javaagent字节码」javaagent字节码代码侵入
agent到collector的协议http,MQthriftgRPChttp/tcp
OpenTracing××

分析

类别ZipkinPinpointSkyWalkingCAT
颗粒度接口级方法级方法级代码级
全局调用统计×
traceid查询××
报警×
JVM监控××

页面UI展示

类别ZipkinPinpointSkyWalkingCAT
健壮度****************

数据存储

类别ZipkinPinpointSkyWalkingCAT
数据存储ES,mysql,Cassandra,内存HbaseES,H2mysql,hdfs
http://www.lryc.cn/news/28725.html

相关文章:

  • [神经网络]Swin Transformer网络
  • 【分布式】什么是分布式,分布式和集群的区别又是什么?答案在正文。
  • MyBatis框架的入门案例
  • 红黑树-随记
  • Python异常处理更新,正常和不正常的都在这里
  • [数据结构]:10-二叉排序树(无头结点)(C语言实现)
  • openstack浅析
  • 华为OD机试Golang解题 - 特异性双端队列 | 含思路
  • 代码随想录中:回溯算法的基础
  • Android kotlin 系列讲解(进阶篇)Jetpack系列之LiveData
  • 如何判断有向无环图:构造有向无环图
  • 【2022.1.3】手脱压缩壳练习(含练习exe)
  • 【异或哈希】CF855 div3 F
  • 深度学习|改进两阶段鲁棒优化算法i-ccg
  • C++11轻松打印本地时间
  • Eureka - 总览
  • 【算法设计-枚举、分治】素数、约数、质因数分解
  • 【第十四届蓝桥杯】第三期模拟赛B组C++题解(待修正+持续更新-ing)
  • 线程池和ThreadLocal详解
  • [深入理解SSD系列综述 1.7] SSD固态存储市场发展分析与预测_固态存储技术发展方向(2022to2023)
  • 【2021.12.25】ctf逆向中常见加密算法和编码识别
  • 【数据结构初阶】堆排序
  • Day5: platformDriver-1
  • 开发手册——一、编程规约_7.控制语句
  • python每日学9 : windows上配置gitee的远程仓库,git的初步使用
  • 精确率与召回率,ROC曲线与PR曲线
  • 现代操作系统——Linux架构与学习
  • 中文代码82
  • 顺序表(一篇带你掌握顺序表)
  • 【SpringCloud】SpringCloud教程之Feign实战