分布式架构正在颠覆企业信息化建设的IT架构 。无论是早期的SOA系统 , 还是现在流程的微服务化和容器化,都是从分布式架构的角度来提高整个系统的吞吐量和容错能力 。另一方面,分布式架构的发展也使得监控更加困难 。过去传统的基于日志和性能指标的监控系统已经很难跟上系统的快速发展 。
因此,在谈到微服务的基础组件时 , 将会强调调用链跟踪和监控组件 。目前常见的调用链组件有Skywalking、Zipkin、Cat、Pinpoint等 。
呼叫链跟踪系统的发展历史分布式服务跟踪是在整个分布式系统中跟踪用户请求的过程,包括相关数据的收集、传输、存储、分析和可视化 。捕捉到跟踪这部分后 , 开发和运维可以在用户交互过程中构建整个请求调用链的可视化视图 , 是调试和监控微服务的核心工具 。2010年,谷歌发表了一篇关于其内部分布式跟踪系统Dapper的论文(http://static . Google user content . com/media/research . Google . com/zh-cn/archive/papers/Dapper-2010-1 . pdf,地址:http://big bully . github . io/Dapper-translation/) , 讲述了Dapper在谷歌两年的演进、设计、运营和维护经历 。借助Dapper概念,开发者只需将Trace组件嵌入到基本的通用库中即可正常运行,而应用层开发者无需关心Trace组件的具体实现和集成,从而达到在应用层将Trace组件以透明的方式嵌入到各个模块中的目的 。
呼叫链产品的发展历史
目前流行的开源调用链系统有两个来源:易贝和Google 。Cat起源于易贝的CAL,其他几个系统起源于2010年的google Dapper paper,包括Twitter的开源产品Zipkin , 携程的CTrace , 南韩的Naver Pinpoint , UBer的Jaeger , 华为的Skywalking等等另外 , 淘宝的鹰眼,京东 。COM的九头蛇,新浪的守望先锋都是不错的链接跟踪监控系统,但都不是开源的 。
呼叫链跟踪系统(一):Zipkin简介开头介绍的是Zipkin,因为现在的Spring Cloud Sleth和Zipkin结合的非常好 , 所以安装应用非常方便 , 甚至不需要单独安装 。当Spring Cloud是Finchley版本时 , 如果只需要默认实现 , 不需要自己搭建Zipkin服务器 , 下载jar即可 。目前很多公司都在选择使用Zipkin 。
来自Zipkin网站的跟踪视图截图
来自Zipkin网站的依赖图截图
【avg变量的定义 avg什么意思】Zipkin是Twitter开发的开源分布式追踪系统 。每个服务向zipkin上报计时数据 , Zipkin会根据调用关系通过Zipkin UI生成依赖图 。
架构概述
跟踪器驻留在应用程序中 , 记录操作的时间和元数据 。这些通常被组装在库上 , 所以它们对用户是透明的 。例如 , 一个已经组装好的Web服务器将在接收请求和发送响应时进行记录 。收集的跟踪数据称为跨度 。
生产环境中的汇编程序应该是安全和低负载的 。因此,带内仅发送ID,并告知接收器仍有一个跟踪正在处理中 。完成的跨度在带外报告给Zipkin,就像应用程序异步报告指示器一样 。
例如 , 当跟踪一个操作时,该操作发送一个HTTP请求,因此将添加一些额外的头信息来传输ID 。标题信息不用于发送详细信息,如操作说明 。
程序集中用来向Zipkin发送数据的组件叫做Reporter 。Reporter通过传输将跟踪数据发送到Zipkin的收集器,收集器将数据持久化到存储中 。之后,API将查询的数据从存储器提供给UI 。
Zipkin流程架构
Zipkin框架
要理解这幅图 , 你需要知道Zipkin的一些核心概念:
Reporter
插入应用程序中向Zipkin发送数据的组件称为Report,其目的是跟踪数据收集 。
Span
在微服务中调用一个组件时,从请求到响应的过程会持续一段时间,称为Span 。跨度是工作的基本单位 。例如,在新建的span中发送RPC相当于向RPC发送响应请求 。span由一个64位ID唯一标识,trace由另一个64位ID表示 。span还有其他数据信息,如摘要、时间戳事件、标记、Span ID和进度ID(通常是IP地址) 。
Span不断地启动和停止,同时记录时间信息 。创建span后,必须在将来的某个时间停止 。
Trace
由一系列跨度组成的树形结构 。如果您正在执行分布式大数据项目,您可能需要创建跟踪 。从客户端的请求到请求处理,中间会有一个调用链 , 叫做Trace 。一个轨迹可以包含多个跨度 , 而每个跨度都有一个上级轨迹 。
Transport
一种数据传输方法,其中组装库发送的span必须从组装的服务传输到收集器 。主要有三种传输类型:HTTP、Scribe和Kafka 。
推荐阅读
- 京东白条发货
- 如果一个男人不主动联系你为什么 可能是这些原因
- 求完结玄幻小说主角冷酷点
- 吞噬万物之无限进化 我成了防御法宝
- 去税务局报税需要带什么资料 税务报到需要什么资料
- 广东省江门市开平市大沙镇 大沙在哪里
- 京东白条分期免息
- 求推荐上海哪些玩的地方适合小
- 自酿苹果醋的做法 自制苹果醋