前言
微服务治理方案中,链路追踪是必修课,SpringCloud的组件其实使用很简单,生产环境中真正令人头疼的往往是软件维护,接口在微服务间的调用究竟哪个环节出现了问题,哪个环节耗时较长,这都是项目上线后一定会遇到的问题,为了解决这些问题链路追踪便应运而生了。
主流方案
1)、SkyWalking:这应该是目前最主流的方案了,我所在公司今年的新项目就开始使用这个,效果确实很显著,功能强大,最重要还是国产的,后面不用看了我们支持国产吧!开个玩笑哈哈,其实这个框架也有缺点,就是稍微有点重,比较适合稍大一点的项目,但可预见后面几年都是最受欢迎的方案;
2)、Zipkin:这个是老牌链路追踪方案,已经被非常多项目验证过实用性,相比较于SkyWalking,我个人更喜欢这个框架,因为更轻量级,安装也非常简单,是中小规模的微服务项目首选方案。
用法
1、zipkin环境搭建
官方提供了docker版本,十分简单。也可以下载编译好的zipkin.jar来运行,是springboot项目。
1)、启动
默认端口号启动zipkin服务,默认端口9411.
java -jar zipkin.jar
2)、指定端口号
java -jar zipkin.jar --server.port=8080
3)、指定访问RabbitMQ
java -jar zipkin.jar --zipkin.collector.rabbitmq.addresses=127.0.0.1
4)、启动效果
2、SpringCloud整合zipkin
springcloud其它基础依赖包引入这里省略,直接模拟场景。
会员服务:zipkin_member
订单服务:zipkin_order
消息服务:zipkin_msg
过程:会员服务调用订单服务,订单服务调用消息服务。
1)、引入依赖
<!-- zipkin --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
2)、application.yml配置
注意事项:
a)、加上服务名,RestTemplate调用时会用到;
b)、加上zipkin服务端地址;
c)、加上probability采集率设置,默认0.1,测试环境改为1.0保证每次都采集,生产环境适当抽样即可。(因为10000个请求抽样1000个也能发现问题了,没必要全部都采集)
3)、引入RestTemplate
这里restTemplate主要用来进行接口调用查看链路追踪是否生效
@Component public class RestTemplateConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } }
4)、controller调用
会员调用订单