演示项目源码下载:(访问密码:9987)
spring-cloud-zipkin.zip
Zipkin是非常有效的工具分布追踪在微服务生态系统。分布式跟踪通常是分布式事务中每个组件的延迟测量,其中调用多个微服务来为单个业务用例提供服务。假设在我们的应用程序中,我们必须为一个事务调用 4 个不同的服务/组件。在启用分布式跟踪的情况下,我们可以测量哪个组件花费了多少时间。
当涉及许多底层系统并且应用程序在任何特定情况下变慢时,这在调试期间非常有用。在这种情况下,我们首先需要确定哪个底层服务实际上很慢。一旦发现服务缓慢,我们就可以努力解决该问题。分布式跟踪有助于识别生态系统中的缓慢组件。
java -jar zipkin-server-1.30.3-exec.jar
Zipkin 启动后,我们可以在http://localhost:9411/zipkin/看到 Web UI 。<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
CLASSPATH
,它会自动集成到常用的通信通道中,例如 –
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
到目前为止,我们已经将 Zipkin 和 Sleuth 集成到微服务中并运行了 Zipkin 服务器。让我们看看如何利用这个设置。import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.annotation.Bean;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class ZipkinService1Application {
public static void main(String[] args) {
SpringApplication.run(ZipkinService1Application.class, args);
}
}
@RestController
class ZipkinController{
@Autowired
RestTemplate restTemplate;
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
@Bean
public AlwaysSampler alwaysSampler() {
return new AlwaysSampler();
}
private static final Logger LOG = Logger.getLogger(ZipkinController.class.getName());
@GetMapping(value="/zipkin")
public String zipkinService1()
{
LOG.info("Inside zipkinService 1..");
String response = (String) restTemplate.exchange("http://localhost:8082/zipkin2",
HttpMethod.GET, null, new ParameterizedTypeReference<String>() {}).getBody();
return "Hi...";
}
}
application.properties
在资源文件夹下的文件中配置应用程序名称和端口信息。
server.port = 8081
spring.application.name = zipkin-server1
同样,对于其他 3 个服务,我们将使用端口8082、8083、8084并且名称也将类似于zipkin-server2、zipkin-server3和zipkin-server4。mvn clean install
微服务中的命令进行最后的 maven 构建,启动所有 4 个应用程序以及 zipkin 服务器。
现在从浏览器测试第一个服务端点几次 – http://localhost:8081/zipkin。请注意,上述 4 项服务中的一项存在故意延迟。所以会有延迟是预期的最终响应,只是不要放弃。要快速启动和停止,请使用 bat 文件
Start-all.bat
和Stop-all.bat
.
演示项目源码下载:(访问密码:9987)
spring-cloud-zipkin.zip
https://www.leftso.com/article/858.html