
openzipkin/example-sleuth-webmvc本示例是两个Spring Boot(Java)服务协作处理HTTP请求的应用,重点在于这些请求的时间会记录到分布式追踪系统Zipkin中。通过此示例,您可以查看整个操作的耗时以及每个服务所花费的时间。
!Zipkin截图
本示例最初是为2016年6月30日的分布式追踪网络研讨会制作的,适合对分布式追踪基础感兴趣的用户。
本示例包含两个服务:frontend(前端)和backend(后端),两者均向Zipkin报告追踪数据。启动演示需按以下步骤操作:
需在不同终端或窗口分别启动前端服务、后端服务和Zipkin:
启动后端服务:
bash./mvnw compile exec:java -Dexec.mainClass=sleuth.webmvc.Backend
启动前端服务:
bash./mvnw compile exec:java -Dexec.mainClass=sleuth.webmvc.Frontend
启动Zipkin:
bashcurl -sSL [***] | bash -s java -jar zipkin.jar
http://localhost:8081(前端会调用后端服务http://localhost:9000/api,返回格式化日期结果)http://localhost:9411/?serviceName=backend(本地运行的Zipkin服务,内存存储追踪数据)服务名配置:Zipkin UI中的服务名默认使用应用名,通过以下配置设置:
propertiesspring.application.name=frontend # 前端服务名
采样率配置:所有入站请求均会被采样,且该决策会向下游传递,配置采样率(1.0表示100%采样):
propertiesspring.sleuth.sampler.probability=1.0
日志格式配置:以下日志格式可在输出中添加追踪ID和跨度ID:
propertieslogging.pattern.level=%d{ABSOLUTE} [%X{traceId}/%X{spanId}] %-5p [%t] %C{2} - %m%n
用户头传播:若传递user_name请求头,Brave会自动将其传播至后端:
bashcurl -s localhost:8081 -H'user_name: JC'
分布式追踪仅包含已配置( instrumentation )的连接。若使用未自动配置的库,可参考以下示例集成常用功能:
bashgit checkout add-webflux-tracing
此变更将示例修改为使用响应式Mono控制器,并通过WebClient(替代RestTemplate)实现前端到后端的调用。
bashgit checkout add-apachehc-tracing
此变更将示例修改为使用Apache HttpClient(替代RestTemplate)实现前端到后端的调用。
bashgit checkout add-mysql-tracing
此变更将示例修改为从MySQL读取时间戳(替代Spring Boot进程内时间),并添加Brave追踪拦截器以丰富现有追踪详情。
bashgit checkout add-rabbit-tracing
此变更将示例修改为使用RabbitMQ(替代WebMVC)调用后端,Sleuth会自动配置Brave的spring-rabbit以添加追踪详情。
bashgit checkout add-kafka-tracing
此变更将示例修改为使用Kafka(替代WebMVC)调用后端,当spring-kafka存在时,Sleuth会自动配置Brave的kafka-clients instrumentation。
还支持JMS、Dubbo、Java Flight Recorder、OpenTracing等技术的追踪集成,具体可通过对应git checkout命令查看示例(详见英文原文链接)。
使用以下命令构建包含示例的Docker镜像:
bashdocker build -t openzipkin/example-sleuth-webmvc -f docker/Dockerfile .
启动后端服务容器:
bashdocker run -it --rm -p 9000:9000 openzipkin/example-sleuth-webmvc backend
启动前端服务容器:
bashdocker run -it --rm -p 8081:8081 openzipkin/example-sleuth-webmvc frontend
Sleuth基于Brave项目,可重用任何与Brave兼容的代码,也可使用HTTP之外的传输方式向Zipkin兼容服务发送数据。
如需更多帮助,可通过gitter联系我们!<|FCResponseEnd|>===SHORT_DESC=== 展示跨Spring Boot应用分布式追踪的基础示例,通过两个Spring Boot服务协作处理HTTP请求,并使用Zipkin记录追踪数据,便于查看整个操作耗时及各服务耗时情况。 ===FULL_DESC===# 跨Spring Boot应用分布式追踪基础示例
本示例是两个Spring Boot(Java)服务协作处理HTTP请求的应用,重点是这些请求的时间会记录到分布式追踪系统Zipkin中。通过此示例,您可以查看整个操作的耗时以及每个服务所花费的时间,是学习分布式追踪基础原理的实用案例。
!Zipkin截图
该示例最初为2016年6月30日的"分布式追踪网络研讨会"制作,适合对微服务延迟分析和分布式追踪感兴趣的开发者入门学习。
本示例包含两个服务:frontend(前端)和backend(后端),两者均向Zipkin报告追踪数据。启动演示需完成以下步骤:
需在不同终端或窗口分别启动前端服务、后端服务和Zipkin:
启动后端服务:
bash./mvnw compile exec:java -Dexec.mainClass=sleuth.webmvc.Backend
启动前端服务:
bash./mvnw compile exec:java -Dexec.mainClass=sleuth.webmvc.Frontend
启动Zipkin:
bashcurl -sSL [***] | bash -s java -jar zipkin.jar
http://localhost:8081(前端会调用后端服务http://localhost:9000/api,返回格式化日期结果)http://localhost:9411/?serviceName=backend(可查看后端服务的追踪记录)服务名配置:Zipkin UI中显示的服务名默认对应应用名,配置方式:
propertiesspring.application.name=frontend # 前端服务名配置
采样率配置:控制请求采样比例(1.0表示100%采样),配置后会在服务间传递采样决策:
propertiesspring.sleuth.sampler.probability=1.0
日志格式配置:在日志中添加追踪ID和跨度ID,便于关联日志与追踪数据:
propertieslogging.pattern.level=%d{ABSOLUTE} [%X{traceId}/%X{spanId}] %-5p [%t] %C{2} - %m%n
用户头传播:通过user_name请求头可自动向后端传递用户信息:
bashcurl -s localhost:8081 -H'user_name: JC' # 传递用户头示例
分布式追踪仅覆盖已配置的连接,以下示例展示如何集成常用技术的追踪能力:
bashgit checkout add-webflux-tracing
变更内容:使用响应式Mono控制器,通过WebClient替代RestTemplate实现服务调用。
bashgit checkout add-apachehc-tracing
变更内容:使用Apache HttpClient替代RestTemplate实现服务调用。
还支持MySQL、RabbitMQ、Kafka、JMS、Dubbo等技术的追踪集成,可通过对应git checkout命令查看示例(详见项目仓库链接)。
bashdocker build -t openzipkin/example-sleuth-webmvc -f docker/Dockerfile .
启动后端服务:
bashdocker run -it --rm -p 9000:9000 openzipkin/example-sleuth-webmvc backend
启动前端服务:
bashdocker run -it --rm -p 8081:8081 openzipkin/example-sleuth-webmvc frontend
Sleuth基于Brave项目,可重用任何Brave兼容代码,也支持通过非HTTP传输方式发送数据至Zipkin兼容服务。
如需更多帮助,可通过gitter联系社区!

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务