
264
|
第
16
章
服务,微服务通过良好定义的接口与系统的其余部分进行交互。借助自动化工具链,可
以在微服务中独立部署本地更改和新功能,同时不干扰系统操作。自动化减少了协调
开销,提高了生产力,缩短了发布周期。所有这些都意味着你的工程投资将获得更大的
回报。
16.2
可观测性
俗话说,“你无法管理你无法衡量的东西。”在大型软件系统中,道理亦然。由于有大量
移动部件,所有部件都在可变负载条件下运行,容易出现不可预测的错误,因此你需要
借助测量系统提供的健康状况和行为来观测系统状态。可观测性解决方案涵盖了这方面
的需求,它提供的能力包括:
•
提供基础设施不断生成的细粒度指标和日志数据来捕获系统当前状态。
•
分析聚合实时指标并采取行动,对指示实际或未决故障的警报做出反应。
可观测性的第一个基本要素是具有一个仪表化系统,它不断以指标和日志条目的形式发
出系统遥测数据。遥测数据的来源多种多样。它可以来自操作系统、你在应用程序中使
用的基础平台(例如,消息传递、数据库)以及你部署的应用程序代码。指标表示资源
利用率以及系统各部分提供的延迟、响应时间和吞吐量。
代码检测是强制性的,你可以使用开源框架[例如
OpenTelemetry
(
https://oreil.ly/sPiw9
)]
或专有解决方案(例如
AWS CloudWatch
)来发出特定于应用程序的指标。指标和日志条
目形成了基于时间序列的连续的数据流,表征了你的应用程序随时间的行为。
捕获原始指标数据是可观测性系统推断并感知态势的先决条件。同时,你需要快速处