11.服务链路追踪(sleuth+zikpin)
来源:互联网 发布:centos kvm 多主机 编辑:程序博客网 时间:2024/06/02 01:23
1.zikpin介绍
zikpin是一个分布式跟踪系统,致力于搜集服务的定时数据,解决微服务架构中的服务延迟问题,包括数据的搜集、存贮、查找、展现
在大规模分布式集群架构下面,多个服务之间相互调用,zikpin可以通过web窗口展示服务之间的调用关系,开发者可以通过这个web窗口轻松掌握整个服务调用之间的关系,快速定位系统的瓶颈,快速定位某个高延迟服务。
sleuth是springcloud下的服务追踪工具,对zikpin提供良好的支持
2.下载zipkin-server-2.3.1-exec
使用jar方式启动(需要jdk8及以上版本),浏览器访问端口9411
3.创建provider-server1
注册eureka
ribbon负载均衡使用服务名称调用provider-server2
暴露一个接口给provider-server2调用
(1)pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tyf</groupId> <artifactId>eureks_serverProvider_test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureks_serverProvider_test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> </parent> <dependencies> <!--eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency><!--web--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- zikpin --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <!-- ribbon --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 打包工具 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories></project>
(2)application.properties
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ server.port=8766spring.application.name=provider-server1 spring.zipkin.base-url=http://localhost:9411
package com.tyf.serverProvider;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.sleuth.sampler.AlwaysSampler;import org.springframework.context.annotation.Bean;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;/* * 调用provider2:http://localhost:8766/provider1-call-provider2 * * */@SpringBootApplication@EnableEurekaClient@RestController@EnableDiscoveryClient //使用ribbon使用服务名称调用public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); } //注入远程调用bean @Autowired private RestTemplate restTemplate; @Bean @LoadBalanced//使用ribbon开启负载均衡 public RestTemplate getRestTemplate(){ return new RestTemplate(); } //注入sleuth跟踪器 @Bean public AlwaysSampler defaultSampler(){ return new AlwaysSampler(); } //调用provider-server2: @RequestMapping("/provider1-call-provider2") public String callHome(){ //返回结果给浏览器 return restTemplate.getForObject("http://provider-server2/provider2", String.class); } //暴露接口给provider-server2调用 @RequestMapping("/provider1") public String info(){ return "provider1计算的结果"; } }
4.创建provider-server2
注册eureka
ribbon负载均衡使用服务名称调用provider-server1
暴露一个接口给provider-server1调用
同provider-server1
(2)application.properties
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ server.port=8769spring.application.name=provider-server2 spring.zipkin.base-url=http://localhost:9411
(3)app
package com.tyf.serverProvider;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.sleuth.sampler.AlwaysSampler;import org.springframework.context.annotation.Bean;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;/* * 调用provider1:http://localhost:8769/provider2-call-provider1 * * */@SpringBootApplication@EnableEurekaClient@RestController@EnableDiscoveryClient //使用ribbon开启负载均衡(使用服务名称调用)public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); } //注入远程调用bean @Autowired private RestTemplate restTemplate; @Bean @LoadBalanced //使用ribbon开启负载均衡 public RestTemplate getRestTemplate(){ return new RestTemplate(); } //注入sleuth跟踪器 @Bean public AlwaysSampler defaultSampler(){ return new AlwaysSampler(); } //调用provider-server1: @RequestMapping("/provider2-call-provider1") public String callHome(){ //返回结果给浏览器 return restTemplate.getForObject("http://provider-server1/provider1", String.class); } //暴露接口给provider-server1调用 @RequestMapping("/provider2") public String info(){ return "provider2计算的结果"; } }
5.测试
一次启动 eureka-server/zikpin-server/provider-server1/provider-server2浏览器访问provider-server1来调用provider-server2
http://localhost:8766/provider1-call-provider2
浏览器显示结果:provider2计算结果(服务互调成功)
查看zikpin的web窗口查看调用细节
阅读全文
0 0
- 11.服务链路追踪(sleuth+zikpin)
- SpringCloud: 服务链路追踪(Spring Cloud Sleuth)
- SpringCloud教程九:服务链路追踪(SpringCloud Sleuth)
- Spring Cloud Sleuth 链路追踪
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- Sleuth 服务链路跟踪
- Spring Cloud学习--服务追踪(Sleuth)
- Spring Cloud(六):链路追踪Sleuth与Zipkin结合
- Spring Cloud(七):链路追踪Sleuth-Zipkin与Mysql数据的持久化
- Spring Cloud应用进行服务追踪分析(Zipkin和spring cloud Sleuth)
- Spring Cloud 服务链路追踪 (zipkin)
- 深入浅出妙用 Javascript 中 apply、call、bind
- 关于最后
- LeetCode113. Path Sum II
- 通过OllyDbg调试windows窗口程序
- 【Spring笔记】2. XML装配Bean
- 11.服务链路追踪(sleuth+zikpin)
- 洛谷P3384 【模板】树链剖分
- 深入理解计算机系统--笔记
- Zju1610 Count the Colors
- 16C
- 1003: 两个整数的四则运算
- OpenGL着色器程序解析--keypress
- IntelliJ IDEA创建Spring SpringMVC MyBatis整合Maven项目,并提交至Github
- JPA