本文节选自《疯狂Spring Cloud微服务架构实战》html
京东购买地址:https://item.jd.com/12256011.htmlgit
当当网购买地址:http://product.dangdang.com/25201393.html服务器
Spring Cloud教学视频:https://my.oschina.net/JavaLaw/blog/1552993架构
Spring Cloud电子书:https://my.oschina.net/JavaLaw/blog/1570383app
先对微服务跟踪的相关概念,作一个基本的讲解。框架
前面章节中,咱们使用Spring Cloud来搭建服务集群,不管是Eureka服务器、服务实例,仍是配置服务器、网关等节点,均可以横向扩展。一旦集群中的服务数量增多,而且它们之间存在复杂的依赖关系,那么管理它们将会变成一件很棘手的事情。分布式
当外部用户向集群发起请求,这些请求将会调用多个服务,每一个服务又会依赖其余的服务,此时,若是出现异常、超时等状况,排查问题将变得很是困难。咱们须要很清楚知道,服务出现了什么问题,这些问题出在哪一个环节。微服务
为了能解决这些问题,Spring Cloud提供了Sleuth框架做为解决方案,Sleuth能够与Zipkin、Apache HTrace和ELK等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。测试
目前有许多的分布式跟踪系统,例如Zipkin、HTrace等,这些系统能够帮助咱们收集一些,由服务实时产生的数据(主要是日志),经过这些数据能够分析出分布式系统的健康状态、服务调用过程、调用耗时等指标,为优化系统、解决问题提供了依据。优化
读者须要区别两个基本的概念:服务跟踪和数据分析,数据分析系统(例如ELK等)收集了服务集群所产生的数据后,也能够实现服务监控、服务跟踪等功能,但明显数据分析系统的概念更为普遍、抽象。本书将会介绍服务跟踪系统Zipkin,一样也会介绍著名的数据分析平台ELK。
Sleuth借鉴了Google Dapper的设计,先了解如下两个概念:
图10-1简单地描述了跨度的概念。
图10-1 跨度
如图10-1,用户或外部程序调用A服务,这次调用看做是跨度A,A服务还要调用B服务,在跨度A的基础上会产生跨度B,跨度B是跨度A的一部分,在Sleuth的设计上,跨度A是B的父跨度。所以在整个跟踪过程当中,这些跨度是树状结构的。
除了跟踪和跨度外,还要了解一下Annotation(事件标识),它主要用于记录事件的存在,主要包括如下几个事件标识:
在使用Sleuth前,先准备本章的测试项目,本章主要以一个微服务集群为基础,该集群包括如下项目:
以上的项目,都可以在codes\10目录找到对应的源码,几个项目的结构请见图10-2。
图10-2 测试项目结构
以上几个测试项目是一个简单的Spring Cloud集群,销售服务依赖了“图书服务”和“支付服务”。
本文节选自《疯狂Spring Cloud微服务架构实战》
Spring Cloud教学视频:https://my.oschina.net/JavaLaw/blog/1552993
Spring Cloud电子书:https://my.oschina.net/JavaLaw/blog/1570383
本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud