
12
|
第
1
章
断出系统内部状态的好坏。
可观测性的这个定义将把可观测性和可控制性作为数学对偶来研究,通常关联着传感
器、线性代数方程组和形式化方法。当机械工程师研究现实世界的物理系统时,可观测
性的这种传统定义会很自然地出现在他们的脑海里。
如果你正在寻找数学和机械工程方面的教科书,那么这本书不适合你。这些书肯定是存
在的,并且任何机械工程师或控制系统工程师都会(通常是热情而详尽地)告诉你,在
传统的系统工程师术语中,可观测性有一个正式的含义。然而,当同样的概念适用于更
复杂的虚拟软件系统时,它开启了一种完全不同的理解你所编写的代码并与之交互的新
方式。
1.2 把可观测性应用到软件系统
卡尔曼的可观测性定义可以应用到现代软件系统中。不过,当我们将可观测性的概念应
用于软件系统时,还需要增加一些额外的思考来满足软件工程领域的需求。为了让一个
软件应用程序具有可观测性,你必须能做到以下几点:
•
了解应用程序的内部运行情况。
•
了解你的应用程序可能进入的所有系统状态,甚至是你以前从未见过和无法预测的
新状态。
•
仅通过观测和使用外部工具来了解内部运行情况和系统状态。
•
理解内部状态,而不是提供任何新的自定义代码来定义它(因为这意味着你需要事
先完全了解这些内部状态)。
要判断你是否能做到这些,一种很好的方式就是问自己以下问题:
•
能否持续回答任何关于应用内部运行机制的开放式问题,以解释所有的异常并可以
做到完全无死角的覆盖(例如,发现某个问题可能与某些模糊的东西关联,但却无
法进一步分解从而真正定位这个问题)