注册不到zipkin服务_Spring Cloud微服务之 sleuth+zipkin日志聚合
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。
工程目录如图:
![](/assets/blank.gif)
(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,所以服务名里列表里是空的,如图:
![](/assets/blank.gif)
如果想学习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接口,结果访问成功。可以多刷新几次
![](/assets/blank.gif)
(3)访问 zipkin server(9411端口),查看日志服务列表,发现service name下拉框已有下拉选项,验证成功。
![](/assets/blank.gif)
点击 Find Traces 查看结果可以看到它的完整链路条,点击链条可以看到调用链条,点击 Dependencies可以查看依赖关系,等等,自行发觉吧,就不上图了。
欢迎工作一到八年的Java工程师朋友们加入Java高级交流:787707172
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢
注册不到zipkin服务_Spring Cloud微服务之 sleuth+zipkin日志聚合相关推荐
- springcloud项目的启动顺序_Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等...
Spring Cloud微服务项目完整示例 目的是为了演示基于Spring Cloud微服务框架,搭建一个接近业务实际场景的项目,只实现了后端项目,前端可以使用VUE或者其他框架. 后端框架包括注册中 ...
- sql 账号查询一个表勾选那个权限_Spring Cloud微服务架构中的数据权限DataPermision实现方案...
Spring Cloud微服务架构中的数据权限DataPermision实现方案 一.出现原因 在Spring Cloud的微服务架构中,常见的权限控制除了菜单权限外,还有数据权限DataPermis ...
- blog微服务架构代码_Spring Cloud微服务架构代码结构详细讲解
上一篇我们介绍了spring cloud云服务架构 - particle云架构代码结构,简单的按照几个大的部分去构建代码模块,让我们来回顾一下: 第一部分: 针对于普通服务的基础框架封装(entity ...
- hystrix 单独使用_Spring cloud微服务架构-Hystrix工作原理(微服务故障熔断)
流程图 下图显示了通过Hystrix向服务依赖项请求时发生的情况: 以下各节将更详细地说明此流程: 1.构造一个HystrixCommand或HystrixObservableCommand对象 第一 ...
- consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...
获取springcloud实战项目详细视频教程,请留言联系. 1.创建项目 我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程. 2.添加依赖 pom.xml 4.0.0 com.ex ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- JAVA Cloud微服务项目实战课程 SpringBoot 2.x +SpringCloud 微服务课程
课程目录 第1章 课程介绍 课程导学和学习建议 1-1 SpringCloud导学 1-2 获取源码说明 1-3 提问建议 1-4 点餐项目演示说明 第2章 微服务介绍 什么是微服务, 单体架构优缺点 ...
- 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...
- Spring Cloud 微服务的那点事
在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生. 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发.部署和 ...
- Spring Cloud微服务简介
1. 基础知识1 什么是微服务架构? 与单体系统的区别 如何实施微服务? 微服务优缺点 为什么选择Spring Cloud? 微服务技术选型 为什么选择Spring Cloud? Spring Clo ...
最新文章
- Objective-c 实用代码
- 强强联手!这所C9高校与西湖大学签约
- 利用套接字实现进程通信一例
- 【行为型模式】《大话设计模式》——读后感 (16)加薪非要老板批?——职责链模式...
- 计算机请说明您的专业知识与技能,湖南省2012对口招生考试计算机类专业综合考试大纲...
- java面试题二 %运算符的问题
- 关于WannaCry勒索病毒 你需要知道的8个问题
- 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人
- php scope权限管理,关于微信公众号scope参数错误或没有scope权限的解决方案
- Linux 远程和本地的一些解决方案
- rf框架搭建_Robot framework(RF)基本使用
- 燃料电池厂商的市场竞争
- 如何在钉钉上开发自己的应用_对企业来说无代码开发平台是否安全
- Linux下SD卡驱动移植
- Android录屏解决方案调研
- 反向题在测试问卷信效度_(完整版)问卷信度效度检验
- SAS硬盘和SATA硬盘的区别与介绍
- 用html语言编写笑脸,怎么使用HTML5中的Canvas绘制笑脸
- 0x00007FFEB46D3F57 (mfc140ud.dll)处(位于*.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000
- Docker 删除image
热门文章
- Windows10下解压版mysql-8.0.11安装教程
- Java使用Executor执行Callable任务时的几种方法
- ssh Permission denied (publickey,password).
- Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
- Material Design 控件知识梳理(4) FloatingActionButton
- dropzone.js重写断点续传功能
- Python实现C代码统计工具(一)
- Chrome开发者工具插件
- Akka 2 Actor 源码
- 块级元素水平,垂直居中的两种方式