Knative最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7.1 反馈控制

工程类专业的人,大概都知道“反馈控制”的概念。严格地说,反馈控制系统指系统的输入影响输出,同时系统又受输出影响。

例如,银行利息中常见的复利是一个反馈回路。复利的计算过程没有人参与,全程由计算机计算。银行支付的利息金额是由累计的本金计算出来的,而累计的本金又包含了最初的本金和上一次银行支付的利息金额。每个计算周期后,累计本金金额都会增加,产生的利息也会增加,收益会逐渐增多,每次的本金投入也会反馈到整个系统中。

或者还可以考虑雪崩的场景。一开始很小的一部分雪滑落,落到下面的雪上,使更多的雪滑落,再落到下面的雪上。如此循环,几秒之内,就可以由几片雪花演变成具有数千吨破坏力的雪崩。

反馈回路的本质是这些回路不需要其他外力因素,单纯地由因果关系影响。这就是银行复利的计算可以和雪崩归为一类的原因。无论系统是天然的还是人造的,都不影响反馈控制系统的工作过程。

我们通常认为反馈回路中的关键部分是其中的智能逻辑,因为很少会研究其中的纯因果循环关系:纯阻尼回路会减少信号,而纯放大回路会放大信号。在人类视角下,宇宙似乎是由线性因果关系组成的,但通常情况下宇宙处于一种稳态的平衡中,并且始终处于一个混沌平衡中。

由于很少了解纯因果关系,因此我们常常将观察到的那些事物归功于智能。根据人们的经验,人类需要创建一种抽象:控制回路[10]

控制循环就是其中的一种方式,在这种实现中,控制器被加到循环中。控制器观察实际状态,将其与期望状态的参数进行比较,然后对实际状态进行操作,以使其逐渐逼近期望状态。这个简单的工作凝聚了数百年几代微积分方向研究者的智慧结晶。但从本质上讲,控制循环的思路很简单—使我们所拥有的事物看起来更像我们期望的样子。

控制循环的基本概念如图1.12所示。

img

图1.12 控制循环的基本概念

与MVC中控制器的区别:

在本书中,“控制器”不是指软件框架中“模型—视图—控制器”(MVC)模式中的控制器。特里格·雷恩斯格(Trygve Reenskaug)发明了MVC模式,最初使用的名称是“Editor”。之前命名为“MVE”模式。MVC之所以得名,是因为:“经过长时间的讨论,尤其是与阿黛尔·戈德堡(Adele Goldberg)的讨论,才命名为模型—视图—控制器。”

控制器或编辑器是连接人类用户的心智模型与计算机中存在的数字模型之间的纽带。通过MVC解决方案支持用户直接查看和操作计算机中的作用域信息。

但这不是Kubernetes或者Knative中控制器的意思。这里的控制器其实与控制理论中的控制器类似,控制理论涉及如何使动态系统更可预测和更可靠地运行。控制理论被工程师广泛应用于电气和电子系统、空气动力学、化工厂设计、制造系统、采矿、精炼厂等许多领域。如果你从没听过MVC,那就更不容易混淆了。

控制器的关键是控制循环的无限重复。控制器定期获取期望状态和实际状态的信息,将它们进行比较,然后决定是否对实际状态采取行动(见图1.13)。对实际状态的重复采样,并将信息“反馈”到控制器,这就是叫反馈控制器的原因[11]

截至目前,本书中描述的控制回环的作用:基本上是抵消实际状态与期望状态的偏差;期望状态是固定不变的,只有当期望状态与实际状态不一致时,控制器才会执行相关的逻辑。

img

图1.13 控制器的内部逻辑

真实逻辑是:与固定不变的期望状态相比,控制器并不能直接看到实际状态的变化。它看到的是两种输入[12]参数之间的差异。每次循环逻辑中,控制器都会重新比较两个输入参数[13]。控制器不知道也不关注自“上次循环”以来实际状态是否已经发生变化。

简单总结一下:由于实际状态或期望状态的变化,控制器可以执行相关逻辑,因为它是对差异做出反应,而不是对实际状态本身做出反应。开发者或使用者可以修改期望状态来触发控制器执行相关逻辑。