主要问题:
1、微服务中链路调用出现问题如何快速排除
2、微服务调用链路耗时怎么定位。
将一次请求分布式调用,使用GPS定位串起来,记录每个调用的耗时、性能等日志,并通过可视化工具展示出来。
SpringCloud的链路追踪组件Sleuth
Sleuth:专⻔用于记录链路数据的开源组件
使用步骤:
1、给每个微服务导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
可视化链路路追踪系统Zipkin
是一个jar包,其端口默认是9411.
打开zipkin的方式,进入该jar包所在地址,然后启动
java -jar zipkin-server-2.12.9-exec.jar
本地访问:http://127.0.0.1:9411/zipkin/
sleuth收集跟踪信息通过http请求发送给zipkin server
zipkin server进行跟踪信息的存储以及提供Rest API即可
Zipkin UI调用其API接口进行数据展示默认存储是内存,也可用mysql 或者elasticsearch等存储
使用步骤:
1、导入依赖 每个微服务模块都需要加上
<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>
2、配置 与application对齐
zipkin:
base-url: http://ip:port/ # zipkin所在的地址
discovery-client-enabled: false # 不开启服务发现
配置采样比例,采样过于频繁会影响系统的性能
sleuth:
sampler:
probability: 1.0 #采样百分比
配置完之后可以通过 http://127.0.0.1:9411/zipkin/本地地址访问查看链路追踪的信息。
链路追踪系统的持久化,方便日后分析
可以存入mysql中
分布式配置
利用配置中心解决;
现在微服务存在的问题配置文件增多,不好维护
修改配置文件需要重新发布
什么是配置中心:统一管理配置, 快速切换各个环境的配置
nacos本身可以作为配置中心,而且前面利用nacos作为服务中心,此处可以再利用其配置中心的功能。
导入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
不能使用原先的application.yml, 需要使用bootstrap.yml作为配置文件;
配置读取优先级 bootstrap.yml > application.yml
2、建立bootstrap.yml文件并配置
spring:
application:
name: xdclass-order-service #微服务名,一般是模块名称
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #Nacos配置中⼼心地址
file-extension: yaml #文件拓拓展格式
profiles:
active: dev
3、注释掉application,并将其内容迁移到nacos的配置中心,如下图
注意data id必须是bootstrap.yml中配置的name+后缀(-dev.yml)
4、上面的配置是静态的,需要配置成动态配置,对修改能实时更新
需要加上这个配置到需要更新类的上面
@RefreshScope