大家好,我是升仔
在微服务架构中,分布式日志链路追踪对于监控和理解服务间复杂的调用关系至关重要。本文详细介绍如何在Spring Cloud项目中使用Spring Cloud Sleuth和Zipkin实现分布式链路追踪。
Zipkin Server是存储和展示追踪数据的中心。使用Docker是搭建Zipkin Server的一种简便方法。
运行以下命令以启动Zipkin服务器:
docker run -d -p 9411:9411 openzipkin/zipkin
这条命令会在本地的9411端口提供Zipkin服务。
我们将创建两个Spring Boot微服务应用,一个作为服务提供者(user-service),另一个作为服务消费者(client-app)。
在user-service
的pom.xml
中添加Spring Cloud Sleuth和Zipkin的依赖:
org.springframework.cloud
spring-cloud-starter-sleuth
org.springframework.cloud
spring-cloud-starter-zipkin
org.springframework.boot
spring-boot-starter-web
定义应用的主类UserServiceApplication
:
@SpringBootApplication
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
定义一个简单的REST控制器UserController
:
@RestController
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@GetMapping("/user/{id}")
public String getUserById(@PathVariable String id) {
logger.info("Fetching user with id {}", id);
return "User " + id;
}
}
在application.yml
中配置应用名和Zipkin服务器地址:
server:
port: 8081
spring:
application:
name: user-service
zipkin:
base-url: http://localhost:9411
在client-app
的pom.xml
中添加与user-service
相同的依赖。
定义应用的主类ClientAppApplication
。
定义一个REST控制器ClientController
来调用user-service
:
@RestController
public class ClientController {
private final RestTemplate restTemplate;
public ClientController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}
@GetMapping("/fetch-user/{id}")
public String fetchUser(@PathVariable String id) {
return restTemplate.getForObject("http://localhost:8081/user/" + id, String.class);
}
}
在application.yml
中配置应用名和Zipkin服务器地址:
server:
port: 8080
spring:
application:
name: client-app
zipkin:
base-url: http://localhost:9411
user-service
和client-app
。client-app
的/fetch-user/{id}
端点来间接调用user-service
。http://localhost:9411
)查看追踪信息。最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享
点赞对我真的非常重要!在线求赞,加个关注非常感激