一. 背景
1.1 什么是微服务应用
微服务应用由一组具有自治性的服务所组成,每一个服务只提供一类服务,这些服务一起协作以提供复杂的业务功能。相比于传统的单体应用,微服务应用是高度分布式的。如下图所示,即为一个典型的微服务应用:
如上图所示,微服务一般具有以下几个大的特征:
自治性(Autonomy)
健壮性 (Resilience)
透明性 (Transparency)
自动化 (Automation)
一致性 (Alignment)
本篇文章我们重点聊一下透明性特征。在微服务应用中,当错误发生的时候,工程师需要及时地被告知。在微服务应用中,一个请求会跨越多个微服务,而这些微服务可能由不同的团队来开发。
这就需要每一个微服务具有透明性和可观测性,来保证工程人员在运营过程中,能够观测和诊断问题。在实际的系统开发和运营过程中,一般需要收集大量的数据来确保微服务的健康度,这些数据一般会涉及:
(1)业务、运营和基础设施的指标
(2)应用日志
(3)请求追踪
1.2 可观测性 (Observability)
可观测性平台的四大支柱包含:指标、追踪、日志和可视化。
1.2.1 指标类数据
指标类数据一般指的是定期收集的一类数据,数据类型为数字,通常我们会关注最小值、最大值、平均值和百分位值。指标类数据通常能够反应系统和应用的效能,比如某个微服务资源利用超过阈值的时候,可以触发告警,以帮助DevOps人员诊断问题和采取进一步地行动。
1.2.2 追踪
追踪(Tracing)是相关的分布式事件组成的序列。一般我们在网关层产生一个唯一的请求ID,这个请求ID会跨越所有的请求参与者,所以追踪其实就是一组带有请求ID的日志的组合。每一个记录带有追踪和调试的信息,比如入口时间、延迟信息等。
1.2.3 日志
日志指的是带有时间戳的事件,它可以包含各种信息,比如请求的确认信息、请求失败产生的错误信息等。
1.2.4 可视化