1 背景:
我公司要启动一个SaaS项目架构 是springcloud 这种,我的任务是分布式链路组件选型,我在zipkin和skywalking 进行对比,
接下来 我介绍一下zipkin。
2 定义:
一个分布式链路跟踪系统,主要指记录服务的调用链路,可以采集时序数据来协助定位延迟等相关问题。数据可以存储在cassandra,MySQL,ES,mem中。分布式链路跟踪是个老话题,国内也有类似的框架,比如阿里的skywalking。 zipkin目前和SpringCloud生态结合紧密,有相关的支持。
3 工作原理
当客户端配置服务端的 URL 地址,一旦发生服务间的调用的时候,会被配置在微服务里面的 Sleuth 的监听器监听,并生成相应的 Trace 和 Span 信息发送给服务端。发送的方式主要有两种,一种是 HTTP 报文的方式,另一种是消息总线的方式如 RabbitMQ
zipkin包括四个组件,collector,storage,search,webUI。
(1)Collector 接收或收集各应用传输的数据
(2)Storage 存储接受或收集过来的数据,当前支持Memory,MySQL,Cassandra,ElasticSearch等,默认存储在内存中。
(3)API(Query) 负责查询Storage中存储的数据,提供简单的JSON API获取数据,主要提供给web UI使用
(4)Web 提供简单的web界面
4 zipkin安装
4.1,下载jar curl -sSL https://zipkin.io/quickstart.sh | bash -s java -jar zipkin.jar (默认启动端口是9411)
4.2,docker docker run -d -p 9411:9411 openzipkin/zipkin
4.3 ,建立springboot项目 启动服务
@EnableZipkinServer启动类表明注解 添加依赖
5 zipkin客户端使用
5.1,引入pom依赖
5.2,添加配置
6,启动全部项目,打开浏览器访问:http://localhost:9411 ,出现以下界面
7,zipkin优势
7.1,部署安装简单
7.2,目前基于springcloud sleuth得到了广泛的使用,
7.3,特点是轻量,使用部署简单
zipkin 只能看到调用了那些服务,服务耗时多长,没法查看服务中的方法调用了redis、网络接口等
下一篇skywalking介绍 demo
PS demo代码地址 springcloud + zipkin