java B2B2C电子商务平台分析之十三

  • 时间:
  • 浏览:0

Zipkin_

整体代码特性如下 资料和源码来源

_

Spring Cloud Sleuth是对Zipkin的一还还有一个多多封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送分发信息等全版自动完成。

Zipkin架构

2.Span

每个服务的处置跟踪是一还还有一个多多Span,都还还可以理解为一还还有一个多多基本的工作单元,饱含了或多或少描述信息:id,parentId,name,timestamp,duration,annotations等。

跟踪器(Tracer)趋于稳定你的应用系统应用应用程序中,并记录趋于稳定的操作的时间和元数据,提供了相应的类库,对用户的使用来说是透明的,分发的跟踪数据称为Span;将数据发送到Zipkin的仪器化应用系统应用应用程序中的组件称为Reporter,Reporter通过几种传输土法子之一将追踪数据发送到Zipkin分发器(collector),有然后将跟踪数据进行存储(storage),由API查询存储以向UI提供数据。

架构图如下:

Zipkin是什么

Zipkin分布式跟踪系统;它都还还可以帮助分发时间数据,处置在microservice架构下的延迟大问题;它管理什么数据的分发和查找;Zipkin的设计是基于谷歌的Google Dapper论文。

每个应用系统应用应用程序向Zipkin报告定时数据,Zipkin UI呈现了一还还有一个多多依赖图表来展示几条跟踪请求经过了每个应用系统应用应用程序;由于着想处置延迟大问题,都还还可以过滤由于着排序所有的跟踪请求,有然后都还还可以查看每个跟踪请求占总跟踪时间的百分比。

3.Transport

分发的Spans时需从被追踪的服务运输到Zipkin collector,有还还有一个多多主要的传输土法子:HTTP, Kafka和Scribe;

1.Trace

Zipkin使用Trace特性表示对一次请求的跟踪,一次请求由于着由后台的若干服务负责处置,每个服务的处置是一还还有一个多多Span,Span之间有依赖关系,Trace然后我我树特性的Span集合;

对应Dpper的开源实现是Zipkin,支持多种语言包括JavaScript,Python,Java, Scala, Ruby, C#, Go等。其中Java由多种不同的库来支持

4.Components

有还还有一个多多组件组成Zipkin:collector,storage,search,web UI

collector:一旦跟踪数据到达Zipkin collector守护系统应用应用程序,它将被验证,存储和索引,以供Zipkin分发器查找;

storage:Zipkin最初数据存储在Cassandra上,由于着Cassandra是可扩展的,具有灵活的模式,并在Twitter中多量使用;有然后你这人 组件可插入,除了Cassandra之外,还支持ElasticSearch和MySQL; 存储,zipkin默认的存储土法子为in-memory,即不要进行持久化操作。由于着想进行分发数据的持久化,都还还可以存储数据在Cassandra,由于着Cassandra是可扩展的,有一还还有一个多多灵活的模式,有然后在Twitter中被多量使用,我们歌词 都都 使你这人 组件可插入。除了Cassandra,我们歌词 都都 原生支持ElasticSearch和MySQL。或多或少后端由于着作为第三方扩展提供。

search:一旦数据被存储和索引,我们歌词 都都 时需某种土法子来提取它。查询守护系统应用应用程序提供了一还还有一个多多简单的JSON API来查找和检索跟踪,主要给Web UI使用;

web UI:创建了一还还有一个多多GUI,为查看痕迹提供了一还还有一个多多很好的界面;Web UI提供了某种基于服务,时间和注释查看跟踪的土法子。

为甚使用Zipkin

随着业务这麼复杂化,系统也随之进行各种拆分,一阵一阵是随着微服务架构和容器技术的兴起,看似简单的一还还有一个多多应用,后台由于着有几还还有一个甚至几百个服务在支撑;一还还有一个多多前端的请求由于着时需多次的服务调用最后都还还可以完成;当请求很快由于着不可用时,我们歌词 都都 无法得知是哪个后台服务引起的,这时就时需处置怎么才能 才能 快速定位服务故障点,Zipkin分布式跟踪系统就能很好的处置那我的大问题。

Zipkin原理

针对服务化应用全链路追踪的大问题,Google发表了Dapper论文,介绍了我们歌词 都都 怎么才能 才能 进行服务追踪分析。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用什么信息,都还还可以可视化地分析服务调用链路和服务间的依赖关系。