一、背景
1.微服务的现状
2.微服务架构带来的问题
a.某个核心服务挂了,导致上游出现大量报警,如何快速确定哪个服务出了问题?
b.某个核心服务挂了,导致大量报错,如何快速确定哪里出了问题?
c.应用程序有性能瓶颈,怎样确定瓶颈在哪里?
d.App端请求响应延迟高,怎样确定是有哪些服务导致的?
e.线上发布了服务,怎么知道它一切正常,比如发布8台服务器,如何直观了解是否有请求进来,访问一切正常?
3.典型解决方案
a.业务自己解决
成本:各个团队都需要投入人力,需要架构师统一培训协调,还不一定能解决好
b.分布式请求跟踪系统
成本:理解系统行为,搭建工具
4.典型分布式请求跟踪调研
2014年Google Dapper 提出论文
阿里巴巴鹰眼EagleEye:不再开源
开源:
点评CAT,京东Hydra,Twitter Zipkin,Apache SkyWalking,Pinpint
二、分布式请求跟踪系统设计
2.1 设计需求有哪些?
a.业务侵入小
b.日志聚合展示,能够生成可分析价值数据
c.调用链整体可追踪,有唯一TraceId串联全部调用路径
d.可以支持请求链路的问题排查
2.2 分布式请求跟踪系统设计目标
a.低侵入性
作为非业务组件,尽可能少侵入或者无侵入其他业量日
务系统,对于使用方透明,减少业务开发人员的负担
b.灵活的应用策略
使用方可以根据需求,自定义收集数据的范围和粒度(开关和采样)且成调
c.时效性
从数据的产生和收集,到数据的分析与处理,再到最终的页面展现,尽可能快决策支持
分析数据可以在决策支持层面发挥作用
d.可视化
使用场景友好的用户视角,丰富的展示方式,可读性高