大部分企业的软件规模都在不断增长。原来单机可以对应用做完所有调试,但在分布式环境下需要对多个主机上的信息做关联,才可能回答清楚以下问题:
提供多个级别的详细信息跟踪
级别(5级):
verbose 详细debug 调试warning 警告error 错误fatal 致命特点: 由应用开发者主动提供
提供一个请求从前端到后端的完整调用链路跟踪
核心价值:
spanid/traceid 关联提供对系统量化的多维度度量
典型度量维度:
| 维度 | Logging(日志) | Tracing(链路追踪) | Metrics(度量) |
|---|---|---|---|
| 主要作用 | 详细信息记录 | 完整调用链路跟踪 | 量化的多维度度量 |
| 数据形式 | 多级别文本信息 | 请求链路的 span/trace | 数值化指标 |
| 提供方式 | 应用开发者主动提供 | 框架埋点 + 上下文传播 | 系统采集 + 聚合 |
| 典型场景 | 异常排查、故障定位 | 分布式调用分析、性能瓶颈 | SLO 度量、容量规划 |
| 分布式适用性 | 一般 | 尤其有用 | 必备 |
架构决策者在落地可观测架构时,需要做以下三件事:
| 序号 | 工作内容 | 关键细节 |
|---|---|---|
| 1 | 选择合适的、支持可观测的开源框架 | 例如 Open Tracing、Open Telemetry |
| 2 | 规范上下文的可观测数据规范 | 例如方法名、用户信息、地理位置、请求参数等 |
| 3 | 规划数据传播路径 | 规划这些可观测数据在哪些服务和技术组件中传播 |
spanid/traceid,
确保进行分布式链路分析时有足够的信息进行快速关联分析。
| 缩写 | 全称 | 中文 | 含义 |
|---|---|---|---|
| SLO | Service Level Objective | 服务等级目标 | 组件内部定义的服务质量目标(架构师定义) |
| SLA | Service Level Agreement | 服务等级协议 | 与用户签订的服务质量协议(对外承诺) |
在云原生架构的七大设计原则中,可观测原则是第3条(教材14.2.2)。 这一原则与"可观测架构"模式相互呼应,共同构成了云原生体系下对系统透明度的要求。
| 序号 | 原则 | 核心含义 |
|---|---|---|
| 1 | 服务化原则 | 以接口契约定义业务关系 |
| 2 | 弹性原则 | 系统部署规模可随业务量变化自动调整 |
| 3 | 可观测原则 ⭐ | 通过日志、链路跟踪、度量主动感知系统状态 |
| 4 | 韧性原则 | 抵御软硬件异常,提升 MTBF |
| 5 | 所有过程自动化原则 | IaC、GitOps、OAM、Kubernetes Operator 等 |
| 6 | 零信任原则 | 以身份为中心进行访问控制 |
| 7 | 架构持续演进原则 | 架构需具备持续演进能力 |
可观测原则的关键能力:
可观测架构是云原生七大主要架构模式中的第 6 项:
| 序号 | 架构模式 | 核心思想 |
|---|---|---|
| 1 | 服务化架构模式 | 微服务、小服务模式 |
| 2 | Mesh 化架构模式 | 中间件框架从业务进程中分离 |
| 3 | Serverless 模式 | 把应用运行委托给云 |
| 4 | 存储计算分离模式 | 解决分布式 CAP 困难 |
| 5 | 分布式事务模式 | XA / BASE / TCC / SAGA / SEATA AT |
| 6 | 可观测架构 ⭐ | Logging + Tracing + Metrics |
| 7 | 事件驱动架构(EDA) | 事件具有 schema,带 QoS 保障 |
spanid / traceid(用于分布式链路关联分析)spanid 和 traceid。