位置: IT常识 - 正文

谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪

编辑:rootadmin
谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪 为什么用

推荐整理分享谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

分布式系统庞大而复杂,服务众多,调用关系网也非常复杂,

服务上线以后如果出现了某些错误,错误的异常就很难定位。一个请求可能调用了非常多的链路,我们需要知道到底哪一块儿出现了错误。

最终希望有一个链路追踪系统,我们从每一个请求进来,到它最终的结束,他们中间都调用了多少的微服务,包括每一个服务调用花费了多长时间。

只有最终结合了链路追踪系统,才可以做好熔断降级,通过链路追踪系统发现,某个服务特别慢,但是它还正常运行着,我们就直接给它降级使用,预防我们整个系统的雪崩问题。

微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。 主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。 所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。

所以就非常有必要在分布式系统中,构建一个服务链路追踪系统。

链路追踪组件有 Google 的 Dapper,Twitter 的 Zipkin,以及阿里的 Eagleeye (鹰眼)等,它们都是非常优秀的链路追踪开源组件。

基本术语和流程

Span(跨度):基本工作单元,发送一个远程调度任务就会产生一个 Span,Span 是一个 64 位 ID 唯一标识的,Trace 是用另一个 64 位 ID 唯一标识的,Span 还有其他数据信息,比如摘要、时间戳事件、Span 的 ID、以及进度 ID。

Trace(跟踪):一系列 Span 组成的一个树状结构。请求一个微服务系统的 API 接口,这个 API 接口,需要调用多个微服务,调用每个微服务都会产生一个新的 Span,所有由这个请求产生的 Span 组成了这个 Trace。

Annotation(标注):用来及时记录一个事件的,一些核心注解用来定义一个请求的开始和结束 。这些注解包括以下:

cs - Client Sent -客户端发送一个请求,这个注解描述了这个 Span 的开始sr - Server Received -服务端获得请求并准备开始处理它,如果将其 sr 减去 cs 时间戳便可得到网络传输的时间。ss - Server Sent (服务端发送响应)–该注解表明请求处理的完成(当请求返回客户端),如果 ss 的时间戳减去 sr 时间戳,就可以得到服务器请求的时间。cr - Client Received (客户端接收响应)-此时 Span 的结束,如果 cr 的时间戳减去cs 时间戳便可以得到整个请求所消耗的时间。

浏览器发送request请求到service1,产生span A,记录trace id,span id,并标识Server Received(代表这个请求是什么时候收到的),service1进行处理。 因为该请求是浏览器发的,所以不会记录Client Sent。

谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪

接着远程调用service2,将请求发出去,又会产生一个spanB,记录 client sent(发送请求的时间)和Server Received,两者相减就是我们能的传输时间。

service2处理完成后产生spanC(这代表着下一个请求)并并发发出去,就会产生两个不同的span,产生SpanD和spanF,分别记录了client sent。

service3接收到请求记录Server Received,处理完成后又产生spanE,但是我们不再调用远程方法,spanE就可以被舍弃了。 service3处理完成spanD后记录serverSent,serverSent与serverRecived相减,就是service3处理请求的时间。

在返回的响应中,记录Client Received,也就是客户端,service2收到的响应时间。

此时的链路可以追踪到,spanA - spanB - spanD(spanC不算,只是一个业务处理产生的span),然后spanD返回响应。

service4的链路同service3。

判断是网络故障还是服务故障,拿spanF举例,

serverSent减serverRecived如果时间超长,那么就是服务出现了问题serverRecived减clientSent如果时间超长,那么就是网络出现了问题

链路中间的传输时间,每一个服务的处理时间,都打了标签,所以我们都能得到这些数据。

标签是有父子关系的,每一个下级标签的父标签都是上级标签。 有父子关系后,就能画出整个调用链的树形结构了,包括它的链路结构。

springboot整合Sleuth和zipkin# 服务提供者与消费者导入依赖# 所以我们直接把依赖导入到common模块中<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>

通过 Sleuth 产生的调用链监控信息,可以得知微服务之间的调用链路,但监控信息只输出 到控制台不方便查看。我们需要一个图形化的工具-zipkin。Zipkin 是 Twitter 开源的分布式跟 踪系统,主要用来收集系统的时序数据,从而追踪系统的调用问题。

zipkin有ui界面,也有相关的api操作,也能把数据存储到一个地方,同时也能收集数据。

zipkin可以把我们服务的数据收集过来,我们服务的客户端就要给它汇报数据,所以我们需要导入zipkin的依赖,我们的客户端就能汇报数据了,汇报来的数据收集到zipkin的服务器里面来做可视化展示。

Zipkin 默认是将监控数据存储在内存的,如果 Zipkin 挂掉或重启的话,那么监控数据就会丢失。所以如果想要搭建生产可用的 Zipkin,就需要实现监控数据的持久化。 而想要实现数据持久化,自然就是得将数据存储至数据库。zipkin支持将数据存储在

内存(默认)MySQLElasticsearch(我们用这个)Cassandra docker run -d -p 9411:9411 openzipkin/zipkin# 启动zipkin,将数据保存至es中docker run --env STORAGE_TYPE=elasticsearch --env ES_HOSTS=192.168.56.10:9200openzipkin/zipkin-dependencies# 也是导入到common中 # zipkin中已经导入了sleuth,所以之前的sleuth依赖可以去掉<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency>application.propertiesspring.cache.type=redisspring.cache.redis.time-to-live=3600000spring.cache.redis.use-key-prefix=truespring.cache.redis.cache-null-values=truegulimall.thread.core-size=20gulimall.thread.keep-alive-time=10gulimall.thread.max-size=200spring.session.store-type=redis# actuator 暴露所有资源management.endpoints.web.exposure.include=*# sentinel dashboard 地址spring.cloud.sentinel.transport.dashboard=localhost:8333# 限流成功指定返回的内容类型spring.cloud.sentinel.scg.fallback.content-type=application/jsonspring.cloud.sentinel.scg.fallback.response-status=400# 开启feign的sentinel远程保护feign.sentinel.enabled=true# 开启debug日志logging.level.org.springframework.cloud.openfeign=debuglogging.level.org.springframework.cloud.sleuth=debug# zipkin服务器地址spring.zipkin.base-url=http://192.168.56.10:9411/# 关闭服务发现,否则spring cloud会把zipkin的url当作服务名称spring.zipkin.discovery-client-enabled=false# zipkin以web http的方式发送数据spring.zipkin.sender.type=web# 采样器,默认为0.1,即百分之十,只采样百分之十的请求数据spring.sleuth.sampler.probability=1

企业的需求是现实性的,因为我们必须要解决现实问题,但教育不应该集中在现实需求上,要面向未来。

https://baijiahao.baidu.com/s?id=1760664270073856317&wfr=spider&for=pc 擦亮花火、共创未来——任正非在“难题揭榜”花火奖座谈会上的讲话 任正非

本文链接地址:https://www.jiuchutong.com/zhishi/297793.html 转载请保留说明!

上一篇:Bootstrap——制作个人简历网页、工具类【边框(添加、删除、颜色、圆角)、清除浮动、颜色(文本、链接、背景)、display属性、浮动、定位、文本对齐】(bootstrap-)

下一篇:车道线检测CLRNet算法复现在Tusimple数据集测试demo(车道线检测模型)

  • 花呗如何关闭(花呗如何关闭信用购)

    花呗如何关闭(花呗如何关闭信用购)

  • 小天才电话手表怎么解除绑定管理员(小天才电话手表售后服务电话)

    小天才电话手表怎么解除绑定管理员(小天才电话手表售后服务电话)

  • 快手头像上有皇冠是什么意思(快手用户头像有个皇冠是什么意思)

    快手头像上有皇冠是什么意思(快手用户头像有个皇冠是什么意思)

  • 删除是ctrl加什么(删除怎么用ctrl)

    删除是ctrl加什么(删除怎么用ctrl)

  • 韩剧tv看一会屏幕就黑了(韩剧tv看一会屏幕变暗)

    韩剧tv看一会屏幕就黑了(韩剧tv看一会屏幕变暗)

  • 快手小店怎么突然没了(快手小店怎么突然开不了了)

    快手小店怎么突然没了(快手小店怎么突然开不了了)

  • 计算机病毒可以使整个计算机瘫痪危害极大计算机病毒是(计算机病毒可以自我复制吗)

    计算机病毒可以使整个计算机瘫痪危害极大计算机病毒是(计算机病毒可以自我复制吗)

  • 两个微信可以下载吗(两个微信下什么软件)

    两个微信可以下载吗(两个微信下什么软件)

  • 橙v和黄v有什么区别(橙v和黄v有什么关系)

    橙v和黄v有什么区别(橙v和黄v有什么关系)

  • p40刷新率多少(p40pro手机刷新率)

    p40刷新率多少(p40pro手机刷新率)

  • vivo账户是别人的手机号(vivo账户是别人的手机号我可以不改吗)

    vivo账户是别人的手机号(vivo账户是别人的手机号我可以不改吗)

  • 存储卡是内存卡吗(存储卡内存卡8g和16g的区别)

    存储卡是内存卡吗(存储卡内存卡8g和16g的区别)

  • 图像文件是显示媒体吗(图像文件是显示的吗)

    图像文件是显示媒体吗(图像文件是显示的吗)

  • excel2010全选的快捷键(excel全选快捷键是)

    excel2010全选的快捷键(excel全选快捷键是)

  • 朋友圈如何发1分钟视频(朋友圈如何发1分钟以上的长视频不被压缩)

    朋友圈如何发1分钟视频(朋友圈如何发1分钟以上的长视频不被压缩)

  • 趣键盘怎么不能直接发图(趣键盘为什么微信不能用)

    趣键盘怎么不能直接发图(趣键盘为什么微信不能用)

  • 淘宝淘气值怎么提升(淘宝淘气值怎么看历史)

    淘宝淘气值怎么提升(淘宝淘气值怎么看历史)

  • qq空间怎么解除自己可见(qq空间怎么解除封闭)

    qq空间怎么解除自己可见(qq空间怎么解除封闭)

  • 微信投票异常会恢复吗(微信投票一直提示内容违规)

    微信投票异常会恢复吗(微信投票一直提示内容违规)

  • 苹果x有锁啥意思(苹果x有锁什么意思)

    苹果x有锁啥意思(苹果x有锁什么意思)

  • zg270 500钢的数字含义(zg200-400钢牌号的含义)

    zg270 500钢的数字含义(zg200-400钢牌号的含义)

  • 电影院里有摄像头没(电影院里摄像头)

    电影院里有摄像头没(电影院里摄像头)

  • perflog是什么文件夹(perflog是什么文件)

    perflog是什么文件夹(perflog是什么文件)

  • 穿越火线下载安装成功后玩不了是怎么回事?(穿越火线下载安装)

    穿越火线下载安装成功后玩不了是怎么回事?(穿越火线下载安装)

  • win11如何设置多任务窗口 Win11开启分屏多任务方法(win11多任务怎么用)

    win11如何设置多任务窗口 Win11开启分屏多任务方法(win11多任务怎么用)

  • pqv2isvc.exe - pqv2isvc是什么进程 有什么作用

    pqv2isvc.exe - pqv2isvc是什么进程 有什么作用

  • wlan和wifi的区别介绍(wlan和蜂窝版的区别)

    wlan和wifi的区别介绍(wlan和蜂窝版的区别)

  • 递延收益与递延所得税负债的区别
  • 餐饮行业的成本率在多少才正常
  • 购进固定资产的安装费计入原值吗?
  • 小规模免哪些税
  • 一千万人民币可以买多少斤黄金
  • 转账支票的密码盘
  • 汇算清缴产生的企业所得税如何做账
  • 地下车位未使用 要交物业服务费
  • 企业间借款利息怎么算
  • 应扣未扣的个人所得税税收如何处理
  • 收到销售折让的红字怎么做账
  • 为安装设备所发生的差旅费入什么科目
  • 发票税表抵扣了账务未抵扣账务处理怎么做?
  • 小规模红字发票怎么做账务处理
  • 建筑行业劳务费开发票可以开工程款吗?
  • 收入冲减费用
  • 非正常损失怎么处理
  • 营改增建筑业税率变化时间
  • 视同销售要做收入?
  • php json
  • 公司员工生病看望的红包能入公司账吗
  • 债券溢价或折价是公司发行债券时产生的收益或损失
  • 劳务费支出计入什么科目?
  • 在vue3项目中自定义组件通常存放在
  • 购买加油卡能否抵扣
  • 增值税专用发票上注明的价款含税吗
  • PHP:imagecolorresolvealpha()的用法_GD库图像处理函数
  • arcore如何使用
  • unix时间戳长度
  • 数学建模心态崩了
  • 预缴增值税需要预缴城建税吗
  • 手机充值如何开公司发票
  • VUE3.0+Antdv+Asp.net WebApi开发学生信息管理系统(二)
  • sql server nullif
  • 企业收利息会计科目
  • 公司向个人支付居间费用
  • 合同权益转让 范本
  • sql2008附加数据库错误3456
  • 营业总收入包含什么
  • 进出口货物收发货人报关注册登记证书
  • 车辆购置税的计税价格为不含增值税的全部价款
  • 小规模增值税免税政策变化历程
  • 公司股东就是董事吗
  • 筹建期的收入要交企业所得税吗
  • 除了住房公积金还有什么基金
  • 个人与公司交易需要纳税吗
  • 抵货款怎么做账
  • 应付账款借方余额在资产负债表中怎么列示
  • 去年的账科目记错了怎么办
  • 其他应付款转营业外收入摘要怎么写
  • 货款还没收到有违法所得吗
  • 丢失了发票怎么处理
  • 劳务费发票可以抵扣进项税吗
  • mysql导入sql脚本指定编码
  • LNMP下使用命令行导出导入MySQL数据库的方法
  • Vista系统提高ADSL上网速度的两种设置方法
  • linux git教程
  • windowspe安装win7
  • windowxp操作系统
  • ubuntu 怎么用
  • linux删除用户组和用户
  • 如何安装windowsxp
  • linux文件权限的设置与修改
  • win10周年版
  • js实现图片放大功能
  • node.js http服务器
  • 人应该掌握的基本知识
  • jquery排序上升和排序下降
  • python中requests小技巧
  • python进阶视频
  • nodejs使用视频教程
  • transformer可视化
  • fragment detach
  • node.js怎么用
  • Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
  • class在js中的实际运用
  • js正则regexp
  • 如何加强部门联动协作
  • 土地税源编码怎么填
  • 税务总局2013年65号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设