微服务架构 | 10. 分布式追踪
目录
前言
参考资料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》
微服务的调试问题会比较复杂,可以使用分布式追踪解决;
1. 分布式追踪的基本概念
又称:分布式请求链路跟踪;
1.1 该技术的提出背景
- 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败;
1.2 分布式追踪的几种不同方向
- 追踪日志链 -> Sleuth:使用一个追踪 ID 将跨多个服务的日志串联起来
- 日志聚合 -> Papertrail:将所有服务实例的日志流到一个集中的聚合点;
- 可视化事务流 -> Zipkin:
- 正好对应下面将要介绍的三种技术;
1.3 日志聚合架构的概念图
1.4 几种开源的日志聚合产品
产品名称 | 实现模式 | 备注 |
---|---|---|
Elasticsearch;Logstash;Kibana (ELK) | 开源;商业;通常实施与内部部署 | 通用搜索引擎;可以通过 ELK 技术栈进行日志聚合;需要最多的手工操作 |
Graylog | 开源;商业;内部部署 | 设计为在内部安装的开源平台 |
Splunk | 商业;内部部署和基于云 | 最古老且最全面的日志管理和聚合工具;最初是内部部署,后来提供云服务 |
Sumo Logic | 免费增值模式;商业;基于云 | 免费增值模式/分层定价模型;仅作为云服务运行;需要用公司的工作账户去注册 |
Papertrail | 免费增值模式;商业;基于云 | 免费增值模式/分层定价模型;仅作为云服务运行; |
1.5 目前几种流行的分布式追踪组件对比
名称 | 厂商 | 特点(优点) | 缺点 |
---|---|---|---|
Spring Cloud Sleuth | Spring Cloud | ||
Papertrail | |||
Zipkin |
2. Spring Cloud Sleuth
Spring Cloud Sleuth 是一个 Spring Cloud 项目,它将关联 ID 装备到 HTTP 调用上,并将生成的跟踪数据提供给 OpenZipkin 的钩子。Spring Cloud Sleuth 通过添加过滤器并与其他 Spring 组件进行交互,将生成的关联 ID 传递到所有系统调用;
- 即:使用追踪D将跨多个服务的事务链接在一起;
- 点击访问:微服务架构 | 10.1 使用 Sleuth 追踪服务调用链;
3. Papertrail
Papertrail 是一种基于云的服务(基于免费增值),允许开发人员将来自多个源的日志数据聚合到单个可搜索的数据库中。开发人员可以为日志聚合选择的解决方案包括内部部署解决方案、基于云解决方案、开源解决方案和商业解决方案;
- 即:来自多个服务的日志数据聚合为一个可搜索的源 ;
- 点击访问:微服务架构 | 10.2 使用 Papertrail 实现日志聚合;
4. Zipkin
Zipkin 是一种开源数据可视化工具,可以显示跨多个服务的事务流。Zipkin 允许开发人员将事务分解到它的组件块中,并可视化地识别可能存在性能热点的位置;
- 即:可视化跨多个服务的用户事务流,并理解事务每个部分的性能特征 ;
- 点击访问:微服务架构 | 10.3 使用 Zipkin 可视化日志追踪;