本例使用Spring Cloud Sleuth
来实现分布式追踪,利用Kafka
实现异步的分布式追踪,使用Elasticsearch
存储追踪数据,使用Zipkin
查看追踪内容。
1.前置条件
使用docker compose
安装Kafka
和Elasticsearch
:
Kafka安装
version: '2'
services:
zk:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:0.10.1.1
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zk:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Elasticsearch安装
version: '2'
services:
elasticsearch:
image: registry.cn-hangzhou.aliyuncs.com/wiselyman/es553:5.5.3
restart: on-failure
ports:
- '9200:9200'
- '9300:9300'
registry.cn-hangzhou.aliyuncs.com/wiselyman/es553:5.5.3
是docker.elastic.co/elasticsearch/elasticsearch:5.5.3
阿里云加速镜像
2.搭建Zipkin Server
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId>
<version>2.4.1</version>
</dependency>
3.开启Zipkin支持
@SpringBootApplication
@EnableZipkinStreamServer
public class ZipkinServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinServerApplication.class, args);
}
}
配置kafka
spring.cloud.stream.kafka.binder.zkNodes: 192.168.1.222
spring.cloud.stream.kafka.binder.brokers: 192.168.1.222
配置ES存储
zipkin:
storage:
type: elasticsearch
elasticsearch:
hosts: http://192.168.1.222:9200
username: elastic
password: changeme
cluster: elasticsearch
index: zipkin
index-shards: 1
index-replicas: 1
4.示例调用服务from-service
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-stream</artifactId>
</dependency>
配置
spring.application.name: from-service
server.port: 8081
spring.sleuth.sampler.percentage: 1.0
spring.cloud.stream.kafka.binder.zkNodes: 192.168.1.222
spring.cloud.stream.kafka.binder.brokers: 192.168.1.222
调用控制器
@RestController
public class HelloController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/sync")
public String sync(@RequestParam String param){
return restTemplate.getForObject("http://localhost:8082/toSync?param=" + param,String.class);
}
}
5.示例被调用服务to-service
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-stream</artifactId>
</dependency>
配置
spring.application.name: to-service
server.port: 8082
spring.sleuth.sampler.percentage: 1.0
spring.cloud.stream.kafka.binder.zkNodes: 192.168.1.222
spring.cloud.stream.kafka.binder.brokers: 192.168.1.222
演示
- 启动
zipkin-server
,访问zipkin页面http://localhost:8080/zipkin/
:
- 启动
from-service
,to-service
,访问http://localhost:8081/sync?param=sss
,这时查看zipkin页面:
源码地址:http://www.wisely.top/2018/03/02/spring_cloud_sleuth-zipkin-kafka-es/
相关推荐
使用Spring Cloud Sleuth+RabbitMQ+Zipkin实现微服务分布式链路追踪,SpringCloud版本使用的是Greenwich.SR1
史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring Cloud Sleuth).pdf史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring Cloud Sleuth).pdf史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring ...
史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring Cloud Sleuth).docx史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring Cloud Sleuth).docx史上最简单的SpringCloud教程 第九篇 服务链路追踪(Spring...
SpringCloud链路追踪-Spring Cloud Sleuth 和 Zipkin 介绍 & Windows 下使用初步
在微服务架构中,微服务之间互相调用,该实例通过Spring cloud sleuth组件实现了微服务跟踪的方案
A demo about how to use Spring Cloud Sleuth + Kafka + Zipkin + ElasticSearch 模块介绍 frontend 提供rest接口,处理用户请求,然后转发给backend处理。 backend 提供rest接口,处理fontend的请求。 zipkin-...
SpringCloud——分布式跟踪(Sleuth)之Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案。
09Spring Cloud Sleuth:分布式请求链路跟踪1
毕业设计基于SpringCloud微服务分布式链路追踪系统源码 追踪实现 使用zipkin+sleuth实现 这个是比较成熟的分布式链路追踪实现方案 拦截器自定义实现 基于Google Dapper 论文,进行自定义实现。 原理: traceId :...
spring cloud sleuth 全链路追踪
springcloud集成调用跟踪 Springcloud sleuth+kafka+elasticsearch+zipkin
SpringCloud 2020版本教程4:使用spring cloud sleuth+zipkin实现仓库追踪 Spring Cloud 阿里巴巴教程 Spring Cloud阿里巴巴教程:使用Nacos作为服务注册发现组件 Spring Cloud阿里巴巴教程:使用Nacos作为配置中心 ...
spring cloud sleuth 全链路追踪数据表
SpringCloud Sleuth 分布式请求链路跟踪 SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置中心 SpringCloud Alibaba Sentinel 实现熔断与限流 SpringCloud Alibaba Seata 处理分布式事务
1.Spring Cloud Sleuth.pdf1.Spring Cloud Sleuth.pdf
RabbitMQ柔性事务方案、SpringCloud-Gateway网关、Feign远程调用、Sleuth+Zipkin链路追踪系统、Spring Cache缓存、SpringSession跨子域Session同步方案、基于ElasticSearch7全文检索、异步编排与线程池、压力测试...
Spring Cloud Sleuth与Spring Boot 2功能端点的集成。 一个演示应用程序,用于显示Spring Boot 2 WebFulx应用程序的Spring Cloud Sleuth集成。 要运行该应用程序,请使用以下命令(为此需要Java 8) ./gradlew ...
(spring-cloud-sleuth-stream+mybatis+rabbit)+(kafka+elasticsearch+zipkin)
微服务等待时间分析 使用Spring Cloud Sleuth和Zipkin测量Spring Boot应用程序中的延迟
主要介绍了Spring Cloud Sleuth整合zipkin过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下