Spring Cloud Sleuth配置

将业务系统划分为数量众多的微服务,各个微服务之间通过Rest协议进行调用,如果
调用链路上的任意一个微服务出现故障或网络超时,都会导致整个功能失败,伴随
微服务模块数量越来越多,微服务之间的调用链条的关系也越来越复杂,可靠性越来
越低。Spring Cloud Sleuth为服务之间提供调用链条跟踪,可以跟踪微服务执行时间、
可视化错误展示,必须通过集成Zipkin显示、调用链条优化,对于调用比较频繁的服务,
实施优化措施

例程:在前面SERVICE-ORDER-CLIENT的基础上修改如下配置

POM.xml


  4.0.0
  com.gf
  eureka-order-client
  war
  0.0.1-SNAPSHOT
  eureka-order-client Maven Webapp
  http://maven.apache.org

	
	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.2.RELEASE
	


  
    UTF-8
  

  
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
            org.springframework.cloud
            spring-cloud-starter-feign
        
        
            org.springframework.cloud
            spring-cloud-starter-hystrix
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.cloud
            spring-cloud-starter-hystrix-dashboard
        
		
			org.springframework.cloud
			spring-cloud-starter-sleuth
		
  
  
	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR1
				pom
				import
			
		
	
	
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

  


Spring Cloud Sleuth配置_第1张图片

修改配置文件

将application.properties部分配置内容转移到bootstrap.properties配置文件中,bootstrap.properties优先加载,这样日志记录中可以跟踪服务名称。

bootstrap.properties

server.port=8130
spring.application.name=order-service-web

application.properties


eureka.instance.hostname=localhost
eureka.instance.server.port=8110
eureka.client.serviceUrl.defaultZone=http://localhost:8110/eureka/
 
feign.hystrix.enabled=true

添加日志文件logback-spring.xml



	

	

	
	
	
		
			
				%d{yyyy-MM-dd HH:mm:ss SSS} [%thread] %-5level %logger{36} - %msg%n
			
		
	
	
		
			DEBUG
		
		
			${CONSOLE_LOG_PATTERN}
			utf8
		
	
	
		
	

Spring Cloud Sleuth配置_第2张图片

运行例程,日志输出如下
Spring Cloud Sleuth配置_第3张图片

日志中输出信息[order-service-web,7e48eb3cbfcc11b3,7e48eb3cbfcc11b3,false]是
Sleuth的跟踪数据,格式为:[appname,traceId,spandId,exportable].
appname:是服务名称
traceId/spanId:是Sleuth调用链条的两个术语
exportable:是否发送给Zipkin

Sleuth术语:
Span:是最基本工作单元,Span通过唯一ID标识,一个RPC调用就是一个Span,Span有起始和结束。
Trace:一个树状结构的Span集合
Annotation:用于记录一个事件的时间信息,主要的Annotation如下
cs:代表客户端发送(Client Send),标识一个Span的开始
sr:服务端接收(Server Received),表示服务端接收到请求,并开始处理,如果减去cs的时间戳,可以计算出网络传输耗时。
ss:服务端完成请求处理(Server Send),应答信息返回客户端,如果减去sr的时间戳,可以计算出服务端处理请求的耗时。
cr:客户端接收(Client Received),标识着Span的结束,客户端成功的接收到服务端的应答信息,如果减去cs的时间戳,可以计算出请求的响应耗时。

集成Zipkin

Zipkin主要收集分布式服务的时间数据,主要包括四个组件
collector:数据采集;
storage:数据存储;
search:数据查询;
UI:数据展示
Zipkin提供可插拔数据存储方式:主要包括In-Memory,MySql,Cassandra或者Elasticsearch

新建工程Eurka-Zipkin

POM.xml


  4.0.0
  com.gf
  eureka-order
  war
  0.0.1-SNAPSHOT
  eureka-order Maven Webapp
  http://maven.apache.org
	
	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.2.RELEASE
	
	
	
		UTF-8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
		
			org.springframework.cloud
			spring-cloud-starter-hystrix
		
		
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
			io.zipkin.java
			zipkin-server
		
		
			io.zipkin.java
			zipkin-autoconfigure-ui
			runtime
		
		
	
  
	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR1
				pom
				import
			
		
	
	
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	



新建配置文件
bootstrap.properties

server.port=8140
spring.application.name=service-zipkin

启动类

package com.gf.eureka_order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import zipkin.server.EnableZipkinServer;

@EnableZipkinServer
@SpringBootApplication
public class ZipkinServer {
    public static void main( String[] args )
    {
    	SpringApplication.run(ZipkinServer.class, args);
    }
}

修改Service-Order,Service-Order-Client工程

修改Service-Order工程
POM.xml


  4.0.0
  com.gf
  eureka-order
  war
  0.0.1-SNAPSHOT
  eureka-order Maven Webapp
  http://maven.apache.org
	
	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.2.RELEASE
	
	
	
		UTF-8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
		
			org.springframework.cloud
			spring-cloud-starter-hystrix
		
		
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
		
			org.springframework.cloud
			spring-cloud-starter-zipkin
		
	
  
	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR1
				pom
				import
			
		
	
	
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	



Spring Cloud Sleuth配置_第4张图片
修改配置文件application.properties


eureka.client.service-url.defaultZone=http://localhost:8110/eureka,http://localhost:8111/eureka
eureka.client.register-with-eureka=true
eureka.client.registry-fetch-interval-seconds=10
eureka.client.fetch-registry=true

spring.zipkin.base-url=http://localhost:8140
spring.sleuth.sampler.percentage=1.0

Spring Cloud Sleuth配置_第5张图片

同样修改Service-Order-Client工程

分布启动Eureka-Server,Service-Order,Service-Order-Client,Eureka-Zipkin

在浏览器中输入http://localhost:8140
Spring Cloud Sleuth配置_第6张图片
Spring Cloud Sleuth配置_第7张图片

你可能感兴趣的:(SpringCloud)