SpringCloud学习(五、服务链路追踪----ZipKip)
一、 服务链路追踪
在前面的例子里,我们有两个微服务,分别是数据服务和视图服务,随着业务的增加,就会有越来越多的微服务存在,他们之间也会有更加复杂的调用关系。
这个调用关系,仅仅通过观察代码,会越来越难以识别,所以就需要通过 zipkin 服务链路追踪服务器 这个东西来用图片进行识别了。
Zipkin 是一个开放源代码分布式的跟踪系统,每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图。
下面我们对前面的内容进行改造。
eureka-server 不需要做改造。
product-data-service和product-view-service 需要进行改造以使其可以被追踪到。这里视图微服务我们就使用product-view-service-feign 。 ( product-view-service-ribbon 后续不再使用,所以既没有被改造,也不用再启动了)
1、分别往product-data-service和product-view-service-feign子项目的pom文件中加入依赖:
product-data-service:
product-view-service-feign:
我们分别向这两个子项目的pom文件中加入了zipkin的依赖。
2、分别往product-data-service和product-view-service-feign子项目的配置文件中加入下列内容:
3、分别往product-data-service和product-view-service-feign子项目的服务启动类中加入配置 Sampler 抽样策略: ALWAYS_SAMPLE 表示持续抽样
product-data-service:
product-view-service-feign:
最后我们开始测试Zipkin的作用:
1、首先要启动zipkin链路追踪服务器,这个启动办法是下载的zipkin-server的jar包(这里我准备了一份放到百度云中:
链接:https://pan.baidu.com/s/1pMEkKgtHbu_CZup2Qc-O_w
提取码:9mdk
), 然后用如下命令启动:
java -jar zipkin-server-2.10.1-exec.jar
2、挨个启动 eureka-server, 改造后的 product-data-service 和 product-view-service-feign
首先我们还是去eureka里面看一下:
这里我们的数据微服务和视图微服务都已经启动了,数据微服务的端口是8001,视图微服务的端口是8012.
3. 访问一次 http://127.0.0.1:8012/products 通过 视图微服务去访问数据微服务,这样链路追踪服务器才知道有这事儿发生~
这样就完成了视图微服务访问数据微服务的过程。
我们在这儿正好看一下具体的视图微服务访问数据微服务的过程:
首先我们启动ProductViewServiceFeignApplication,然后访问web层的 http://127.0.0.1:8012/products:会执行service的方法:
再去service里面看一下:用了ProductClientFeign的方法:
最后再去ProductClientFeign里面看一下:
这里我们使用Feign注解的方法指定了数据微服务的注册名称从而获取数据微服务的数据!
4. 然后打开链路追踪服务器 http://localhost:9411/zipkin/dependency/ 就可以看到如图所示的 视图微服务调用数据微服务 的图形了。
上图非常清楚的告诉我们在2019年12月31日的14:59分我们使用feign视图微服务访问了data数据微服务!
这里我们的zipkin是以jar启动的,这样做有一个好处就是松耦合服务监控,无论zipkip启动不启动,业务微服务都可以正常运转。
这样我们的服务链路追踪也就完成了,下一节我们将进行服务器、客户端的配置!