当前位置: 首页 > 后端技术 > Java

微服务Zipkin链接跟踪原理(图文详解)

时间:2023-04-01 19:28:21 Java

一个看似简单的应用,可能需要几十个、上百个服务来支撑,一个请求需要多次服务调用。当请求变慢或不可用时,我们不知道是哪个后台服务导致的。这时候我们可以使用Zipkin来解决这个问题。由于业务访问量增加,业务复杂化,以及微服务架构和容器技术的兴起,需要对系统进行各种拆分。微服务系统拆分后,我们可以使用Zipkin链接快速定位和跟踪故障服务点。今天重点讲解Zipkin链接跟踪的原理和使用@mikechenZipkin为什么要用Zipkin?Zipkin的原理1.Zipkin架构2.Zipkin核心组件3.Zipkin核心结构4.Zipkin工作流程Zipkin部署与运行总结Zipkin基本概述Zipkin是一个开源的分布式实时数据跟踪系统(DistributedTrackingSystem),它可以收集服务之间调用的时间数据并提供调用链接的跟踪。Zipkin的主要功能是收集各种异构系统的实时监控数据。在微服务架构下,定位服务响应延迟等问题非常方便。Zipkin中的每个调用链接都通过一个traceid串联起来。只要有traceid,就可以直接定位调用链接,可以根据服务名称、标签、响应时间等进行查询,过滤掉那些耗时比较长的链接节点。为什么要使用Zipkin?为什么大型互联网公司需要分布式跟踪系统?随着商务访问的增多。比如:淘宝比较典型。淘宝从早期的单体发展到分布式微服务,体系也经历了各种分裂。一个看似简单的应用,后台可能有几十个甚至上百个服务。支持。一个客户的请求,比如下订单的请求,可能需要多次服务调用(产品、用户、店铺等的系统调用)才能完成。当请求变慢或者不能正常使用时,我们不知道是哪个后台服务导致的。这时候,我们就得想办法快速定位服务故障点。Zipkin分布式跟踪系统可以很好的解决这个问题,主要解决以下三个问题:1.动态显示服务的链接;2、分析服务环节的瓶颈并进行优化;3.快速服务链路故障检测。这就是Zipkin服务跟踪系统的目的和意义。当然,除了Zipkin的分布式追踪系统,我们还可以使用其他更成熟的实现,比如:Naver的PinpointApache的HTrace阿里的鹰眼追踪JD的Hydra新浪的守望先锋美团点评的CATskywalking...现在知道为什么要用Zipkin了吧,它是如何使用的,它有什么作用,让我们了解一下Zipkin是如何工作的。Zipkin的原理1.ZipKin体系结构ZipKin可以分为两部分:ZipKinServer:用于数据的采集和存储、数据的分析和展示;ZipKinClient:一系列基于不同语言和框架封装的客户端工具,这些工具完成了跟踪数据生成和报告的功能。整体架构如下:2.Zipkin核心组件Zipkin(server)由四个组件组成,分别是collector、storage、search、webUI。1)收集器信息收集器收集器接受或收集各个应用程序传输的数据。2)storage存储组件zipkin默认直接将数据存储在内存中,也支持使用Cassandra、ElasticSearch和Mysql。3)搜索查询过程提供简单的JSONAPI,供外部调用查询。4)webUI服务器展示平台主要提供简单的web界面,使用图表向开发者清晰展示链接信息。3.Zipkin核心结构当用户发起调用时,Zipkin客户端会在入口处为整个调用链路生成一个全局唯一的traceid,并在这个链路id中为每个分布式调用生成一个span。一个trace由一组span组成,可以看成一棵树,trace为根节点,span为若干个子节点,如下图所示:4.Zipkin工作流程一个应用代码发起一个HTTPget请求,经过TraceFramework拦截后,大致流程如下图所示:1)将当前调用链的Trace信息添加到HTTPHeader中;2)记录本次调用的时间戳;3)发送HTTP请求,携带trace相关的header信息;4)通话结束后,记录本次话费的时间;5)将上述过程产生的信息收集成span,然后将span信息上传到zipkin的Collector模块。Zipkin的部署和运行Zipkin的github地址:https://github.com/apache/inc...Zipkin支持的存储类型包括inMemory、MySql、Cassandra、ElasticSearch。正式环境推荐使用Cassandra和ElasticSearch。总结通过本文,我们了解了Zipkin的作用、使用场景、架构、核心组件以及Zipkin的工作流程等,希望对大家掌握微服务有所帮助。作者简介陈锐|mikechen,10年+大厂架构经验,《mikechen的互联网架构》系列文章作者,专注于互联网架构技术。阅读《mikechen的互联网架构》40W字Java并发技术文章合集|虚拟机|数据库|春天|雷迪斯|分布式|