SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)

SpringCloud成长笔记(五)链路跟踪Zipkin

  • 一、简介
  • 二、环境搭建
  • 三、源码
  • 四、运行
    • 1、安装部署rabbitMQ
    • 2、启动zipkin
    • 3、启动zipkin和feign的微服务
  • 五、github源码
  • 六、参考资料

一、简介

微服务拆分的越详细,随之带来的问题就是跨微服务之间的调用,之前我们介绍过微服务之间的调用可以使用feign,那么服务接口之间的如何链路跟踪就是必须解决的问题,这时候就需要zipkin来帮我们解决这个问题。

二、环境搭建

这一节,我们使用springboot2.0.3版本,SpringCloud使用Finchley.Release版本。然后引入rabbitMQ作为链路跟踪的消息中间件。

三、源码

新建两个微服务,一个用于fegin的调用微服务,另一个用于自动zipkin进行跟踪
pom.xml引入依赖的包


		
			org.springframework.cloud
			spring-cloud-stream-binder-rabbit
            2.0.0.RELEASE
		
		
			org.springframework.cloud
			spring-cloud-starter-stream-rabbit
            2.0.0.RELEASE
		
		
			org.springframework.cloud
			spring-cloud-starter-sleuth
		
		
			org.springframework.cloud
			spring-cloud-starter-zipkin
		

feign微服务,新建一个RERTController,第一个提供原始的test api,第二个用于feigin调用

@RestController
public class FeignController{

    @Autowired
    private FeignService feignService;

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String test(String name ){
        return name;
    }


    @RequestMapping(value = "/test2",method = RequestMethod.GET)
    public String test2(String name ){
        return feignService.test(name);
    }
}

zipkin的微服务用来验证使用resttemplate测试的情况

@RestController
public class ZipKinTest {

    @RequestMapping(value = "/test1")
    public String test(){
        return "test";
    }

    @RequestMapping(value = "/test")
    public String test(@RequestParam(value = "name")String name){
        return "test:"+name;
    }
    @RequestMapping(value = "/test2")
    public String test2(){
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.getForEntity("http://localhost:8201/test",String.class).getBody();
    }
}

feign配置文件application.properties

#tomcat config
spring.application.name=bg-cloud-feign-server
server.port=18903

#注册中心
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/
eureka.instance.prefer-ip-address=true
eureka.instance.status-page-url-path=/actuator/info
eureka.instance.health-check-url-path=/actuator/health

# 链路跟踪
spring.zipkin.rabbitmq.queue=zipkin
spring.zipkin.sender.type=rabbit
spring.zipkin.locator.discovery.enabled=true
spring.sleuth.sampler.probability=1.0


rabbitmq.host=127.0.0.1
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest

zipkin的微服务配置文件application.properties

server.port=8201
spring.application.name= bg-cloud-zipkin

spring.zipkin.rabbitmq.queue=zipkin
spring.zipkin.sender.type=rabbit
spring.zipkin.locator.discovery.enabled=true
spring.sleuth.sampler.probability=1.0


rabbitmq.host=127.0.0.1
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=ALWAYS
eureka.instance.leaseRenewalIntervalInSeconds=10
eureka.instance.health-check-url-path=/actuator/health
eureka.client.registryFetchIntervalSeconds=5
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

四、运行

1、安装部署rabbitMQ

先安装OTP

安装rabbitMQ

开始插件管理
rabbitmq-plugins.bat enable rabbitmq_management

添加用户
rabbitmqctl.bat list_users

rabbitmqctl.bat add_user admin 888888
启动rabbitMQ
rabbitmqctl.bat set_user_tags admin administrator

localhost:15672
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第1张图片

2、启动zipkin

启动zipkin,默认端口9411
注意用户名密码的授权及正确性
运行下面命令启动zipkin服务器
java -DRABBIT_ADDRESSES=127.0.0.1:5672 -DRABBIT_USER=guest -DRABBIT_PASSWORD=guest -jar zipkin-server-2.11.6-exec.jar

SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第2张图片

3、启动zipkin和feign的微服务

启动eureka server,自动zipkin微服务,启动feign微服务
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第3张图片
启动微服务后运行接口
在这里插入图片描述
这时候再熟悉zipkin的页面,可以发现两个微服务已经出现在service Name的下拉列表中了。
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第4张图片
跟踪之前接口的调用情况
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第5张图片
每个接口调用的时长,以及链路的依赖
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第6张图片
SpringCloud成长笔记(五)链路跟踪(Zipkin+rabbitMQ)_第7张图片

五、github源码

Github

六、参考资料

你可能感兴趣的:(SpringCloud)