本文节选自《疯狂Spring Cloud微服务架构实战》

京东购买地址::https://item.jd.com/12256011.html

当当网购买地址::http://product.dangdang.com/25201393.html

Spring Cloud教学视频:http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud电子书:http://blog.csdn.net/boxiong86/article/details/78488226

微服务跟踪概述

先对微服务跟踪的相关概念,做一个基本的讲解。

实际问题与Sleuth

前面章节中,我们使用Spring Cloud来搭建服务集群,不论是Eureka服务器、服务实例,还是配置服务器、网关等节点,都可以横向扩展。一旦集群中的服务数量增多,并且它们之间存在复杂的依赖关系,那么管理它们将会变成一件很棘手的事情。

当外部用户向集群发起请求,这些请求将会调用多个服务,每个服务又会依赖其他的服务,此时,如果出现异常、超时等情况,排查问题将变得非常困难。我们需要很清楚知道,服务出现了什么问题,这些问题出在哪个环节。

为了能解决这些问题,Spring Cloud提供了Sleuth框架作为解决方案,Sleuth可以与Zipkin、Apache HTrace和ELK等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。

服务跟踪系统

目前有许多的分布式跟踪系统,例如Zipkin、HTrace等,这些系统可以帮助我们收集一些,由服务实时产生的数据(主要是日志),通过这些数据可以分析出分布式系统的健康状态、服务调用过程、调用耗时等指标,为优化系统、解决问题提供了依据。

读者需要区别两个基本的概念:服务跟踪和数据分析,数据分析系统(例如ELK等)收集了服务集群所产生的数据后,也可以实现服务监控、服务跟踪等功能,但明显数据分析系统的概念更为广泛、抽象。本书将会介绍服务跟踪系统Zipkin,同样也会介绍著名的数据分析平台ELK。

Sleuth基本概念

Sleuth借鉴了Google Dapper的设计,先了解以下两个概念:

?      Trace:表示整个跟踪的过程,从用户发起请求,到最终的响应。一次跟踪包含多个跨度,这些跨度以树状结构进行保存。

?      Span:跨度,表示一次调用的过程,一次跟踪包含多次的调用过程。假设用户向A服务发送请求,A服务又要调用B服务,那么此时将会产生两个跨度:用户调用A服务、A服务调用B服务。

图10-1简单地描述了跨度的概念。

图10-1 跨度

如图10-1,用户或外部程序调用A服务,此次调用看作是跨度A,A服务还要调用B服务,在跨度A的基础上会产生跨度B,跨度B是跨度A的一部分,在Sleuth的设计上,跨度A是B的父跨度。因此在整个跟踪过程中,这些跨度是树状结构的。

除了跟踪和跨度外,还要了解一下Annotation(事件标识),它主要用于记录事件的存在,主要包括以下几个事件标识:

?      cs:Client Sent,表示客户端发送了请求,这个标识意味着跨度的开始。例如前面的A服务向B服务发送请求,A服务就是客户端。

?      sr:Server Received,表示服务端接收到请求,并开始进行处理。

?      ss:Server Sent,表示服务器端完成请求的处理,并对客户端做出响应。

?      cr:Client Received,表示客户端接收到响应,意味着整个跨度的结束。

项目准备

在使用Sleuth前,先准备本章的测试项目,本章主要以一个微服务集群为基础,该集群包括以下项目:

?      test-eureka-server:Eureka服务器,端口为8761。

?      test-book-service:图书微服务,主要提供根据id查询图书的服务,端口为8081。

?      test-pay-service:支付微服务,主要提供支付服务,端口为8082。

?      test-sale-service:销售微服务,会调用图书服务和支付服务,端口为8083。

以上的项目,均可以在codes\10目录找到对应的源码,几个项目的结构请见图10-2。

图10-2 测试项目结构

以上几个测试项目是一个简单的Spring Cloud集群,销售服务依赖了“图书服务”和“支付服务”。

本文节选自《疯狂Spring Cloud微服务架构实战》

Spring Cloud教学视频:http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud电子书:http://blog.csdn.net/boxiong86/article/details/78488226

本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud

疯狂Spring Cloud连载(29)微服务跟踪概述相关推荐

  1. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  2. Spring Cloud(5)---基于 Spring Cloud 完整的微服务架构实战

    基于 Spring Cloud 完整的微服务架构实战 技术栈 Spring boot - 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程. Eureka - 云端服务发现,一 ...

  3. 微服务等于 Spring Cloud?了解微服务架构和框架

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...

  4. Spring Cloud Hoxton 版本微服务项目搭建 admin 监控客户端

    Spring Cloud Hoxton 版本微服务项目搭建 admin 监控客户端 前言 在上一篇文章博主已经讲解了admin 管理中心服务项目如何创建,不会的话可以前往学习,传送门:Spring C ...

  5. 【福利】赠书:Spring Cloud与Docker微服务架构实战(第2版)

    本次福利送出好友周立的第二版书籍! 正在关注和使用Spring Cloud的朋友们不要错过哦! 内容提要 <Spring Cloud与Docker微服务架构实战(第2版)>基于Spring ...

  6. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  7. 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...

  8. Spring Cloud OAuth2 JWT 微服务认证服务器得构建

    文章目录 Spring Cloud OAuth2 JWT 微服务认证服务器得构建 前言 认证服务得搭建 `AuthorizationServer` `WebSecurityConfig` `Autho ...

  9. Spring Cloud Alibaba 大型微服务项目实战

    作者介绍 程序员十三,多年一线开发经验,历任高级开发工程师.后端主程.技术部门主管等职位.同时也是开源项目的爱好者和贡献者.掘金优秀作者.CSDN 博客专家.实体图书作者.专栏作者.视频讲师. 小册介 ...

最新文章

  1. 泉州中考分数如何计算机,2019年泉州中考总分多少分,泉州中考各个科目多少分...
  2. Scale-up(纵向扩展) vs Scale-out(横向扩展)
  3. 低代码音视频开发训练营
  4. SAP UI5 应用开发教程之五十七 - 基于 OData 注解的 Smart Field 使用方法学习试读版
  5. python加载图片并显示_python OpenCV 读取并显示图像
  6. 最短路的几种算法及其优化(模板)
  7. C++ PAT 乙级 ——1003 我要通过
  8. java中对象清空值_对象的引用和清除_Java语言程
  9. Python 获取(字典)字符串时间区间并转换类型,判断该时间段属否在时间范围
  10. 随想录(为什么循环队列具有先天的并行性)
  11. HTML基础:web前端建站流程
  12. 开发提效小技巧分享(二)
  13. python能制作ppt动画效果吗_你听说过Python可以做动画吗
  14. 怎么看公司财务报表?
  15. python实现sip协议_SIP协议的常见命令 - HouWeiGui的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. ARM处理器性能对比
  17. vue router 嵌套、父子、多个路由跳转传值获取不到参数undefined
  18. 设计模式四:用一个生产手机的简单例子说清楚工厂模式
  19. 【FND】EBS调试模式使用说明
  20. If you would like to submit a bug report, please visit:

热门文章

  1. 在腾讯云轻量应用服务器上自建网盘教程
  2. 手机内存里html是什么意思,闪存是什么意思(买手机时看到的8+128是指什么)
  3. postman应用窗口不显示处理方法
  4. PMP考试新考纲以及题型有哪些变化?
  5. UE4 修改分辨率及全屏窗口化
  6. environments
  7. Redmi智能电视X 50、 x55、x65 2022款评测
  8. Github 创建分支
  9. 【NLP】从双曲面到双曲几何庞加莱盘
  10. MAVEN配置文件Setting.xml学习笔记