1.简介

(1)什么是服务追踪 Sleuth

在微服务架构中,要完成一个功能,通过Rest请求服务API调用服务来完成,整个调用过程可能会聚合多个后台服务器协同完成。在整个链路上,任何一处调用超时

或出错都有可能造成前端请求失败。这时跟踪记录这些请求的调用的情况就要复杂的多,这就需要一个专门的工具来处理,spring cloud sleuth组件就是用于跟踪记录的工具

Sleuth就相当于为微服务架构引入了一套记录体系,包含两部分,一个是 trace ID;另一个是 span ID,随时记录一个请求的每一步操作。

(2)什么是日志聚合 Zipkin

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:787707172,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

zipkin 是 Dpper的开源实现,支持多种语言。Sleuth已经将每个请求从开始调用到完成的每一步都进行了记录,但是这些log信息会很分散,使用起来不太方便,就

需要有一个工具可以将这些信息进行收集和汇总,并且显示可视化的结果,便于分析和定位。这就需要创建一个 Zipkin Server用于收集和展示这些调用链路的信息,他

的使用也很方便。

2.如何使用

本例需要创建三个工程:

product-sevice 普通客户端工程,提供一个rest接口(项目创建参考第三节)

order-service 普通客户端工程,用于调用product-service服务(项目创建参考第三节)

zipkin-service 日志服务工程,用于追踪记录请求链路。

第一步:创建 zipkin-service,作为Zipkin Server。

工程目录如图:

(1)首先在 pom.xml中增加依赖

<dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autoconfigure-ui</artifactId><scope>runtime</scope></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-server</artifactId></dependency>

(2)在启动类增加@EnableZipkinServer注解,用来开启Zipkin Server的功能。

package com.hole;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import zipkin.server.EnableZipkinServer;@EnableDiscoveryClient
@EnableZipkinServer
@SpringBootApplication
public class ZipkinServiceApplication {private static Logger logger = LoggerFactory.getLogger(ZipkinServiceApplication.class);public static void main(String[] args) {SpringApplication.run(ZipkinServiceApplication.class, args);}
}

(3)application.properties配置如下:

spring.application.name=zipkin-service
server.port=9411
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

(4)启动 Zipkin Server,访问 http://localhost:9411/,此时因为还没有服务请求关联的zipkin server,所以服务名里列表里是空的,如图:

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:787707172,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

第二步:创建日志客户端工程

想要在界面上能看到zipkin server搜集的日志信息及依赖关系,需要在每个工程中增加sleuth与zipkin的依赖,然后增加注册地址,指向到 zipkin server上就可以了。

1.(1)创建product-service工程,并增加依赖。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-zipkin</artifactId></dependency>

(2)application.properties配置增加配置,指向 zipkin server服务地址。

spring.zipkin.base-url=http://localhost:9411/

(3)启动类代码增加 /hello 接口,并在接口入口处做一个日志打印,代码如下

package com.hole;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class ProductServiceApplication {private static Logger logger = LoggerFactory.getLogger(ProductServiceApplication.class);public static void main(String[] args) {SpringApplication.run(ProductServiceApplication.class, args);}@RequestMapping(value = "/hello",method = RequestMethod.GET)public ResponseEntity<String> hello(){logger.info("called by product-service");return new ResponseEntity<String>("hello product service!", HttpStatus.OK);}
}

2.(1)创建order-service工程。

依赖和配置同 product-sevice。

(2)启动类增加 /product/hello接口,目的是调动 product-service接口。在接口入口位置做一个日志打印。

package com.hole;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class OrderServiceApplication {private static Logger logger = LoggerFactory.getLogger(OrderServiceApplication.class);@Bean@LoadBalancedRestTemplate restTemplate(){return new RestTemplate();}@AutowiredRestTemplate restTemplate;public static void main(String[] args) {SpringApplication.run(OrderServiceApplication.class, args);}@RequestMapping(value = "/hello",method = RequestMethod.GET)public ResponseEntity<String> hello(){return new ResponseEntity<String>("hello order service!", HttpStatus.OK);}@RequestMapping(value = "/product/hello",method = RequestMethod.GET)public String productHello(){logger.info("order-service calling product-service!");return restTemplate.getForEntity("http://PRODUCT-SERVICE/hello",String.class).getBody();}
}

第三步:启动项目并验证。

(1)启动全部项目,启动成功后在监控页面查看结果。

(2)访问 order-service 服务的 /product/hello接口,结果访问成功。可以多刷新几次

(3)访问 zipkin server(9411端口),查看日志服务列表,发现service name下拉框已有下拉选项,验证成功。

点击 Find Traces 查看结果可以看到它的完整链路条,点击链条可以看到调用链条,点击 Dependencies可以查看依赖关系,等等,自行发觉吧,就不上图了。

欢迎工作一到八年的Java工程师朋友们加入Java高级交流:787707172

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢

注册不到zipkin服务_Spring Cloud微服务之 sleuth+zipkin日志聚合相关推荐

  1. springcloud项目的启动顺序_Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等...

    Spring Cloud微服务项目完整示例 目的是为了演示基于Spring Cloud微服务框架,搭建一个接近业务实际场景的项目,只实现了后端项目,前端可以使用VUE或者其他框架. 后端框架包括注册中 ...

  2. sql 账号查询一个表勾选那个权限_Spring Cloud微服务架构中的数据权限DataPermision实现方案...

    Spring Cloud微服务架构中的数据权限DataPermision实现方案 一.出现原因 在Spring Cloud的微服务架构中,常见的权限控制除了菜单权限外,还有数据权限DataPermis ...

  3. blog微服务架构代码_Spring Cloud微服务架构代码结构详细讲解

    上一篇我们介绍了spring cloud云服务架构 - particle云架构代码结构,简单的按照几个大的部分去构建代码模块,让我们来回顾一下: 第一部分: 针对于普通服务的基础框架封装(entity ...

  4. hystrix 单独使用_Spring cloud微服务架构-Hystrix工作原理(微服务故障熔断)

    流程图 下图显示了通过Hystrix向服务依赖项请求时发生的情况: 以下各节将更详细地说明此流程: 1.构造一个HystrixCommand或HystrixObservableCommand对象 第一 ...

  5. consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...

    获取springcloud实战项目详细视频教程,请留言联系. 1.创建项目 我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程. 2.添加依赖 pom.xml 4.0.0 com.ex ...

  6. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  7. JAVA Cloud微服务项目实战课程 SpringBoot 2.x +SpringCloud 微服务课程

    课程目录 第1章 课程介绍 课程导学和学习建议 1-1 SpringCloud导学 1-2 获取源码说明 1-3 提问建议 1-4 点餐项目演示说明 第2章 微服务介绍 什么是微服务, 单体架构优缺点 ...

  8. 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

    Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...

  9. Spring Cloud 微服务的那点事

    在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生. 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发.部署和 ...

  10. Spring Cloud微服务简介

    1. 基础知识1 什么是微服务架构? 与单体系统的区别 如何实施微服务? 微服务优缺点 为什么选择Spring Cloud? 微服务技术选型 为什么选择Spring Cloud? Spring Clo ...

最新文章

  1. Objective-c 实用代码
  2. 强强联手!这所C9高校与西湖大学签约
  3. 利用套接字实现进程通信一例
  4. 【行为型模式】《大话设计模式》——读后感 (16)加薪非要老板批?——职责链模式...
  5. 计算机请说明您的专业知识与技能,湖南省2012对口招生考试计算机类专业综合考试大纲...
  6. java面试题二 %运算符的问题
  7. 关于WannaCry勒索病毒 你需要知道的8个问题
  8. 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人
  9. php scope权限管理,关于微信公众号scope参数错误或没有scope权限的解决方案
  10. Linux 远程和本地的一些解决方案
  11. rf框架搭建_Robot framework(RF)基本使用
  12. 燃料电池厂商的市场竞争
  13. 如何在钉钉上开发自己的应用_对企业来说无代码开发平台是否安全
  14. Linux下SD卡驱动移植
  15. Android录屏解决方案调研
  16. 反向题在测试问卷信效度_(完整版)问卷信度效度检验
  17. SAS硬盘和SATA硬盘的区别与介绍
  18. 用html语言编写笑脸,怎么使用HTML5中的Canvas绘制笑脸
  19. 0x00007FFEB46D3F57 (mfc140ud.dll)处(位于*.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000
  20. Docker 删除image

热门文章

  1. Windows10下解压版mysql-8.0.11安装教程
  2. Java使用Executor执行Callable任务时的几种方法
  3. ssh Permission denied (publickey,password).
  4. Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
  5. Material Design 控件知识梳理(4) FloatingActionButton
  6. dropzone.js重写断点续传功能
  7. Python实现C代码统计工具(一)
  8. Chrome开发者工具插件
  9. Akka 2 Actor 源码
  10. 块级元素水平,垂直居中的两种方式