声明:链路追踪属于微服务的一部分,微服务系列博文陆续会出,可以帮助小伙伴们学习微服务一站式从入门到精通。

文章目录

  • 一、zipkin 服务端
    • 1. 下载
    • 2. 前台运行
    • 3. 服务端访问
  • 二、网关服务
    • 2.1. 父项目依赖
    • 2.2. gateway依赖
    • 2.3. gateway配置
  • 三、订单服务
    • 3.1. order依赖
    • 3.2. order配置
    • 3.3. 控制层
  • 四、产品服务
    • 4.1. product依赖
    • 4.2. 配置
    • 4.3. 控制层
  • 五、用户服务
    • 5.1.user依赖
    • 5.1.user配置
    • 5.3.控制层
  • 六、测试验证
    • 6.1. 访问
    • 6.2. 控制出台日志
    • 6.3. 服务端监控
一、zipkin 服务端
1. 下载

https://repo1.maven.org/maven2/io/zipkin/zipkin-server

2. 前台运行
java -jar zipkin-server-2.23.4-exec.jar

3. 服务端访问

http://zipkin.server.com:9411/zipkin/

二、网关服务
2.1. 父项目依赖
  <properties><!--全局版本统一管理--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><common.version>1.0-SNAPSHOT</common.version><api.version>1.0-SNAPSHOT</api.version><spring-cloud.version>Hoxton.SR9</spring-cloud.version><spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version></properties><dependencies><!--服务注册发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- spring cloud zipkin 依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--公共模块--><dependency><groupId>com.gblfy</groupId><artifactId>api-serv</artifactId><version>${api.version}</version></dependency><!--公共模块--><dependency><groupId>com.gblfy</groupId><artifactId>common</artifactId><version>${common.version}</version></dependency><!--https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--spring-cloud-alibaba 版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2.2. gateway依赖
        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
2.3. gateway配置
server:port: 80
spring:cloud:nacos:discovery:service: gateway-servserver-addr: localhost:8848gateway:discovery:locator: # 是否与服务发现组件进行结合,通过 serviceId 转发到具体服务实例。lowerCaseServiceId: true # 是否开启基于服务发现的路由规则enabled: true # 是否将服务名称转小写routes:# 订单服务- id: order-servuri: lb://order-servpredicates:- Path=/order/**filters:- StripPrefix=1# 商品服务- id: product-servuri: lb://product-servpredicates:- Path=/product/**filters:- StripPrefix=1zipkin:base-url: http://zipkin.server.com:9411/ # 服务端地址discovery-client-enabled: falsesender:type: web                      # 数据传输方式,web 表示以 HTTP 报文的形式向服务端发送数据sleuth:sampler:probability: 1.0            # 收集数据百分比,默认 0.1(10%)
三、订单服务
3.1. order依赖
 <!-- SpringCloud Openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--springmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
3.2. order配置
server:port: 8000
spring:application:name: order-servcloud:nacos:discovery:service: order-servserver-addr: localhost:8848zipkin:base-url: http://zipkin.server.com:9411/ # 服务端地址discovery-client-enabled: falsesender:type: web                      # 数据传输方式,web 表示以 HTTP 报文的形式向服务端发送数据sleuth:sampler:probability: 1.0            # 收集数据百分比,默认 0.1(10%)#请求处理的超时时间
ribbon:ReadTimeout: 10000ConnectTimeout: 10000# feign 配置
feign:sentinel:enabled: trueokhttp:enabled: truehttpclient:enabled: falseclient:config:default:connectTimeout: 10000readTimeout: 10000compression:request:enabled: trueresponse:enabled: true# 暴露监控端点
management:endpoints:web:exposure:include: '*'
3.3. 控制层
package com.gblfy.order.controller;import com.alibaba.fastjson.JSON;
import com.gblfy.api.RemoteProductService;
import com.gblfy.api.RemoteUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;@RestController
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class OrderController {private final RemoteProductService productService;private final RemoteUserService userService;//http://localhost:8000/order/create?productId=11&userId=11222@GetMapping("/order/create")public String createOrder(@RequestParam Integer productId, @RequestParam Integer userId) {// 调用商品服务,通过商品ID获取商品名称String productName = productService.getProductName(productId);// 调用用户服务,通过用户ID获取用户名称String userName = userService.geUserName(userId);HashMap<String, Object> map = new HashMap<>();map.put("商品名称", productName);map.put("用户名称", userName);return JSON.toJSONString(map);}
}
四、产品服务
4.1. product依赖
 <!-- SpringCloud Openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--springmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
4.2. 配置
server:port: 8000
spring:application:name: order-servcloud:nacos:discovery:service: order-servserver-addr: localhost:8848zipkin:base-url: http://zipkin.server.com:9411/ # 服务端地址discovery-client-enabled: falsesender:type: web                      # 数据传输方式,web 表示以 HTTP 报文的形式向服务端发送数据sleuth:sampler:probability: 1.0            # 收集数据百分比,默认 0.1(10%)#请求处理的超时时间
ribbon:ReadTimeout: 10000ConnectTimeout: 10000# feign 配置
feign:sentinel:enabled: trueokhttp:enabled: truehttpclient:enabled: falseclient:config:default:connectTimeout: 10000readTimeout: 10000compression:request:enabled: trueresponse:enabled: true# 暴露监控端点
management:endpoints:web:exposure:include: '*'
4.3. 控制层
package com.gblfy.product.controller;import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {// 调用用户服务,通过用户ID获取用户名称return "IPHOME13 的商品ID:" + productId;}
}
五、用户服务
5.1.user依赖
 <!-- SpringCloud Openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--springmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
5.1.user配置
server:port: 15000
spring:cloud:nacos:discovery:service: user-servserver-addr: localhost:8848zipkin:base-url: http://zipkin.server.com:9411/ # 服务端地址discovery-client-enabled: falsesender:type: web                      # 数据传输方式,web 表示以 HTTP 报文的形式向服务端发送数据sleuth:sampler:probability: 1.0            # 收集数据百分比,默认 0.1(10%)application:name: user-serv
5.3.控制层
package com.gblfy.user.controller;import com.gblfy.user.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class UserController {private final UserService userService;@GetMapping("/user/{userId}")public String getUserName(@PathVariable Integer userId) {return userService.getUserName(userId);}
}
六、测试验证
6.1. 访问

http://localhost/order/order/create?productId=22&userId=11

6.2. 控制出台日志

6.3. 服务端监控




开源地址:
https://gitee.com/gb_90/micro-service-parent

nacos 集成 zipkin sleuth实现链路追踪(入门篇)相关推荐

  1. Spring Cloud搭建微服务架构----使用Zipkin做服务链路追踪

    2019独角兽企业重金招聘Python工程师标准>>> 实例主要有三个工程组成: Server-zipkin:通过ZipkinServer功能,实现收集调用数据,展示: Servic ...

  2. 微服务架构--链路追踪(Nginx篇)

    阅读提示:本文不提供链路追踪的完整解决方案,只提供Nginx层对链路追踪的支持方案! 1 背景介绍 微服务的诞生,解决了传统单体应用的很多问题,如可维护性差.扩展性差和灵活性差等问题(粗粒比较).微服 ...

  3. Skywalking链路追踪--告警篇

    1.概述 Skywalking发送告警的基本原理是每隔一段时间轮询skywalking-oap收集到的链路追踪的数据,再根据所配置的告警规则(如服务响应时间.服务响应时间百分比)等,如果达到阈值则发送 ...

  4. 想了解Sleuth+zipkin分布式请求链路追踪,来看看这篇文章吧!

    目录 下载zipkin的jar包,运行 微服务配置 引入pom yml配置 访问结果: 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前 ...

  5. Gitlab与Jaeger集成,实现Tracing链路追踪

    一.Jaeger的安装部署 $ docker run -d --name jaeger \-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \-p 5775:5775/udp \ ...

  6. Springcloud 集成 Skywalking 实现全链路追踪

    下载链接 https://skywalking.apache.org/downloads/ 本地搭建springcloud工程,偷懒可参考gitee https://gitee.com/wangLi1 ...

  7. 分布式链路追踪之Spring Cloud Sleuth夺命连环9问?

    点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 大家好,我是不才陈某~ 这是<Spring Cloud 进阶>第九篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂 ...

  8. 链路追踪_springcloud-第九回 链路追踪Sleuth

    背景 微服务架构下,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求最后的失败,为了快速定位和解决问题,需要追踪服务请求序列 ...

  9. 还搭不出来服务链路追踪Spring Cloud Sleuth?

    Spring Cloud Sleuth 作为Spring Cloud 的一个组件,其主要作用是解决分布式系统当中提供服务链路追踪的. 为什么要使用链路追踪? 在微服务系统中,一个来自用户的请求,请求先 ...

最新文章

  1. pygame-KidsCanCode系列jumpy-part10-角色动画(上)
  2. Ubuntu12.04下arm交叉编译环境的建立
  3. css设置最小宽度消失,关于CSS:最小/最大宽度媒体查询没有语法意义
  4. AIX系统相关的日常操作
  5. Discuz!NT 和网站整合
  6. 在线的代码托管平台 coding.net ===中国扩展版github
  7. Express框架学习笔记-get请求中参数的获取
  8. 汉诺塔问题详解(C语言)
  9. JavaWeb项目开发步骤
  10. STM32+DWM1000开发uwb测距系列教程之一:官方例程简介
  11. MySQL下载安装新手教程
  12. 前端知识点——Web Sockets
  13. Web压缩问题-图片不显示
  14. zookeeper的重连思考
  15. 一个爆款小程序的复盘
  16. 从K个数组中任取一个字符串进行按顺序拼接
  17. 4、基本命令-系统管理
  18. mysql binlog event_MySQL binlog中的事件类型详解
  19. 笔记本ssd固态硬盘的M.2、SATA、PCI-E和NVMe的区别
  20. 调用android邮件程序,Android开发中怎样调用系统Email发送邮件(多种调用方式)

热门文章

  1. Porting:linux内核的模块化、根文件系统的制作和自动挂载
  2. SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020
  3. linux top显示CPU占用高,Steal高
  4. 让edge浏览器可以一直启动flash问题的解决办法。
  5. 持续编程--切身体会
  6. 矿大计算机科学与技术,王志晓 - 中国矿业大学 - 计算机科学与技术学院
  7. 鸟哥的Linux学习笔记
  8. 2017哈工大计算机考研分数线,哈尔滨工业大学2017年考研分数线
  9. 在三四线城市,如何融资和创业?
  10. 成熟稳定的免费开源机加工行业ERP客户案例分享