Spring Cloud Sleuth 整合Zipkin、RabbitMQ 和 (Mysql或Elasticsearch)

Sleuth官网地址   http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_sleuth

        微服务之间是通过轻量级的通讯协议进行通信,而网络常常也相对脆弱、网络资源也相当有限。 如果我们能够跟踪每一个请求,了解请 求经过哪些微服务、请求的耗时、网络延迟、业务逻辑耗时这些指标,这样我们就能够更好的分析系统的瓶颈、针对的解决系统问题。因此、我们微服务体系中加上跟踪还是很有必要的。

RabbitMQ用于的微服务和Zipkin服务端的通信(取代微服务和Zipkin服务端通过http通信,实现了微服务和Zipkin服务端的解耦,微服务不需要知道Zipkin服务端的网络地址,一些情况下微服务可能和Zipkin服务端网络不通(Zipkin服务端宕机),使用http通信收集方式将无法工作)

Zipkin提供了一个很友好的界面、利于分析追踪数据(没有尝试过使用elk分析追踪数据(不再需要zipkin服务端,直接分析日志数据))。

Mysql或Elasticsearch实现了追踪数据的持久化(Zipkin默认是将追踪数据存在内存中,如服务端重启或宕机,会导致历史数据丢失,所以追踪数据持久化很有必要).

Spring Cloud Sleuth 提供了一套分布式跟踪解决方案,先了解一下它的术语:

Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)

span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace。

Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束

cs   - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始

sr   - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟

ss  - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间

cr  - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间

将Span和Trace在一个系统中使用Zipkin注解的过程图形化:



原有微服务整合Spring Cloud Sleuth Zipkin 和 RabbitMQ

对原有微服务只要加依赖和配置就可以了

1.  在需要跟踪的微服务pom中添加如下依赖:

sleuth、zipkin、rabbitmq依赖

2.  在其配置文件中加入rabbitmq和sleuth的配置:

rabbitmq和sleuth配置

spring.sleuth.sampler.percentage:指定需要取样的请求百分比,默认值是0.1,分布式系统中,数据量也许会应该大。所以,可以根据各自的项目情况,设置合适的采样非常重要。这里因为是开发阶段,我把采样设置成了1.0,即100%。

如果不使用中间件(rabbitmq),还需要配置一个参数指定Zipkin服务器地址(默认访问http://localhost:9411)

spring.zipkin.base-url:http://192.168.1.178:9411

这里配置的地址需改成自己设置的Zipkin地址。


Zipkin服务端:

1. 创建一个artifactId为zipkin-service 的Maven工程,并为项目添加如下pom依赖:

包括了zipkin、rabbitmq、elasticsearch的依赖
mysql数据库连接依赖

如果使用mysql做数据的持久化的话,这两个依赖不能少。

2. 编写配置文件,在application.yml中添加如下内容:

mysql、zipkin、elasticsearch配置

zipkin.storage.type配置持久化类型,这里配置了elasticsearch,如果要使用mysql的话,需改为mysql

3. 编写启动类,使用@EnableZipkinStreamServer注解,生命一个Zipkin Server。

spring boot启动类

我这里加了@EnableDiscoveryClient注解,把 zipkin-service也当成微服务注册


4. Zipkin界面介绍

trace列表

可以根据时间、微服务、请求类型等刷选trace列表

trace详情
span详情
微服务之间依赖关系

可视化界面有利于我们分析为服务之间的依赖关系,可以选择时间来刷选


5. elasticsearch

elasticsearch持久化的数据

elasticsearch的安装部署这里就不说了


6. mysql

自动生成的三张表

Zipkin的jar包中有个mysql.sql文件,用于初始化数据库表结构 。


初次写文章,如有错误、疏漏请大家多多包涵指教。(由于不知道代码如何在简书上展示,所以全部是截图的)

QQ:656765117      邮件:hz656765117@163.com   

附上Zipkin服务端代码: http://git.oschina.net/huangzhuo92/zipkin-service






最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容