微服务整合Zipkin、RabbitMQ和 Elasticsearch

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

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

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

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

(1)创建一个 Spring Boot 工程,在pom.xml文件中添加以下依赖。

		
		
            io.zipkin.java
            zipkin-autoconfigure-ui
        
        
            io.zipkin.java
            zipkin-server
        

        
        
            io.zipkin.java
            zipkin-autoconfigure-collector-rabbitmq
            2.6.1
        
		
		
		
            io.zipkin.java
            zipkin-autoconfigure-storage-elasticsearch-http
            2.6.1
        

 

(2)、在主应用类里添加注解

@SpringBootApplication
@EnableZipkinServer // 此注解标识这个服务监听所有操作和行为以供查询。
public class MyZipkinServerEsApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyZipkinServerEsApplication.class, args);
	}
}

 

(3)、在application.properties添加相关配置

#表示当前程序不使用sleuth
spring.sleuth.enabled=false
spring.sleuth.sampler.percentage=1

#表示zipkin数据存储方式是elasticsearch
zipkin.storage.type=elasticsearch
zipkin.storage.StorageComponent=elasticsearch
zipkin.storage.elasticsearch.cluster=elasticsearch
zipkin.storage.elasticsearch.hosts=192.168.41.24:9200
zipkin.storage.elasticsearch.max-requests=64
zipkin.storage.elasticsearch.index=zipkin
zipkin.storage.elasticsearch.index-shards=5
zipkin.storage.elasticsearch.index-replicas=1


zipkin.collector.rabbitmq.addresses=192.168.41.24:5672
zipkin.collector.rabbitmq.username=admin
zipkin.collector.rabbitmq.password=admin
zipkin.collector.rabbitmq.queue=zipkin

(4)、在监听服务里添加依赖和相关配置

        
        
            org.springframework.cloud
            spring-cloud-starter-zipkin
        
        
            org.springframework.amqp
            spring-rabbit
        
	
#rabbitmq配置
spring.rabbitmq.host=192.168.41.24
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
zipkin.rabbitmq.queue=zipkin

#Zipkin服务器的地址
spring.zipkin.base-url=http://192.168.41.24:8204
#将采样比例设置为1.0,也就是全部都需要
spring.sleuth.sampler.percentage=1.0

(5)、在 resources文件下添加 logback-spring.xml 日志配置文件,可以直接使用。



	
    	
	
	
	

	

	
	
		
		${LOG_PATH}/${APPDIR}/log_info.log
		
		
			
			${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log
			
			30
			
			
				2MB
			
		
		
		true
		
		
			${CONSOLE_LOG_PATTERN}
			utf8
		
	

	
		
		
			${CONSOLE_LOG_PATTERN}
			utf8
		
		
		
			debug
		
	

	
	

	
	
		
		
		
	

(6)启动 zipkin 和 监听的服务。进行服务接口的调用,通过zipkin进行分析追踪数据。

微服务整合Zipkin、RabbitMQ和 Elasticsearch_第1张图片

你可能感兴趣的:(Spring,Cloud)