
友情提醒
- 文末获取【真会玩】- SpringCloud Netflix 实战系列
Postman在线脚本
、Github仓库实战源码
- 【真会玩】- SpringCloud Netflix 实战系列有概念有实战,考验动手能力,如果实战中有操作没有达到与本文同等效果的请先仔细检查个人操作与文中相关内容是否一致,如检查无误请私信或评论区留言~
Sleuth
Sleuth是Spring cloud的分布式追踪解决方案,跟踪每个请求,中间请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。我们就能更好地分析系统瓶颈、解决系统问题
集成案例
在每个需要监控的服务中添加一下依赖,我们这里就在
Feign-Consumer
和Feign-Provider
服务中添加相关依赖, -Feign-Consumer
、Feign-Provider
相关代码请参考【真会玩】- SpringCloud Netflix 实战笔记 -【OpenFeign代替Feign】
- sleuth是Spring cloud的分布式追踪解决方案
- zipkin是twitter开源的分布式跟踪系统,收集系统的时序数据,从而追踪微服务架构中系统延时等问题,可以通过界面更加友好的展现给用户
- 收集系统的时序数据,从而追踪微服务架构中系统延时等问题
- 由Collector、Storage、Restful API、Web UI(采集器,存储器,接口,UI)四个部分组成
- sleuth 收集跟踪信息通过http请求发送给zipkin 服务,zipkin将跟踪信息存储(默认内存存储,可以用mysql,ES等存储)
- 提供RESTful API接口,zipkin ui通过调用api进行数据展示
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
在上述两个服务
application.yml
中添加配置
spring:
#zipkin
zipkin:
#微服务会收集信息上报到这个地址
base-url: http://localhost:9411/
#采样比例1
sleuth:
sampler:
rate: 1
到这里代码层面的已经简单配置好了,我们还需要去下载一个
zipkin
的jar
包,因为Zipkin
的管理界面不是跑在我们微服务应用中的,是需要他官网的zipkin.jar
独立运行在服务器中的
zipkin下载
- 如果是Linux系统的也可以用他官网的
curl -sSL https://zipkin.io/quickstart.sh | bash -s
脚本在命令行执行即可下载- jar包我已经下载下来传到优快云了,点击此处跳转进行下载(免积分)
启动
Zipkin
java -jar zipkin.jar
然后再重启我们的
Feign-Consumer
和Feign-Provider
服务调用localhost:8888/api/v1/testFC/testOpenFeign
接口,这个接口是走的Zuul
网关别搞错了
- 会在被调用控制台看到多出以下信息出来,那这个一串信息代表什么呢?
- 【服务名,traceId,spanId,是否向zipkin上报信息】
调用完成后我们可以访问
Zipkin
来查看调用链路了
再看看调用出错是什么样子的,我们把
Feign-Provider
服务的FeignProviderController
中/pingFeignProvider
接口模拟超时的代码放开
public String pingFeignProvider() {
try {
System.out.println("开始模拟超时");
TimeUnit.MILLISECONDS.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException();
}
return "Ping Feign Provider Port:" + port + " Success Count:"+requestCount.incrementAndGet();
}
重启
Feign-Provider
服务再次调用localhost:8888/api/v1/testFC/testOpenFeign
接口
可以清晰看到调用信息和耗时所在
源码&脚本获取地址
- Postman脚本:
https://www.getpostman.com/collections/8a0954746646f0dee9a6
- 脚本可直接复制到Postman使用
Link
方式导入- 实战源码仓库:
https://github.com/RhysNi/SpringCloudFamilyMeals.git