找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2940

积分

0

好友

391

主题
发表于 昨天 06:52 | 查看: 4| 回复: 0

学习梗图:一只戴着眼镜的粉色小猪在看书

之前我们讨论过软件架构风格的五大经典分类,它们由 David Garlan 和 Mary Shaw 总结。然而,这些传统风格在处理动态变化的现实世界时,有时会显得“死板”——它们预设了处理策略,一条路走到黑,缺乏应对环境实时变化的能力。

但在许多基于物理环境的软件(如汽车ABS防抱死系统、智能空调)中,系统必须具备动态演化和自我调整的能力。因此,一种针对动态、实时环境而设计的新架构风格应运而生:闭环控制风格

简单来说,这种风格的核心是设定一个目标,并持续保持它。当环境变化导致目标可能偏移时,系统能自动感知、分析并执行调整,重新恢复目标状态。就像一个能自己克服困难的“宝子”。

与它相对的,是 开环控制系统风格:固定流程,只管执行,不关心结果是否正确,也不保证目标是否达成。

一个最直观的对比例子就是 电视遥控器空调温度控制器

  • 电视遥控器(开环控制):你按下“音量+”键,它发出红外信号。信号可能被遮挡,电视音量可能没变化,它也不会知道,更不会重试。
  • 空调温度控制器(闭环控制):你设定目标温度26℃。它会持续制冷,直到温度传感器检测到室温达到26℃才停机。如果室温回升,它会再次启动制冷,始终努力维持26℃的目标。

开环系统与闭环系统对比示意图

我们可以这样理解:

  • 开环结构:在执行决策的过程中,不收集外部反馈信息,也不根据情况改变决策。好比只会机械执行命令的同事,碰到困难就停下,结果对不对也不管。
  • 闭环结构:在决策过程中,不断收集信息、反馈给决策者,并动态调整决策。好比有主动性的同事,会为了达成目标,自己收集信息并调整策略。

举个开发中的小例子:图片加载。
常规做法是设置 src 链接,至于图片是否能成功加载并渲染,前端并不关心。这就是典型的开环结构
而我们可以进行优化,监听图片的 onerroronload 事件。如果加载失败,则尝试重试或替换备用图。这就是应用了闭环结构的思想。

那么,闭环结构是如何根据变化调整策略的呢?主要分为两种控制机制:

两种核心控制机制

1. 反馈控制 FeedBack

逻辑:检测输出结果,发现目标已经偏离,再启动调整程序。属于“事后诸葛亮”,有错再改。

  • 优点:策略简单,包容性强。不用关心偏离的具体原因,反正事后修复就好。
  • 缺点:存在滞后性。错误或偏离已经发生才补救,在某些对实时性要求极高的场景中可能产生影响。
  • 例子:前面提到的图片加载失败后重试,就是典型的反馈控制。

2. 前馈控制 FeedForward

逻辑:检测可能导致目标偏离的干扰因素,在干扰影响输出之前,就通过计算提前采取动作来抵消它。属于“防患于未然”。

  • 优点:理论上可以实现零滞后,系统输出更平稳,避免被破坏。
  • 缺点:实现难度高,极度依赖精准的预判模型。如果模型不准,提前采取的“纠正”动作反而可能成为新的干扰。
  • 例子:根据流量上升趋势预测服务器负载,提前扩容,而不是等到CPU飙高再处理。

一个不太恰当但易懂的例子:

  • 反馈控制:等抓到对象出轨了,再处理(离婚或原谅)。
  • 前馈控制:观察到对象身边出现了新的帅哥/美女,就提前介入处理,防患于未然。

在实际应用中,为了兼顾响应速度和稳定性,通常会结合使用前馈与反馈控制

  • 前馈控制 快速抵消那些已知的、可测量的、冲击大的主要干扰。
  • 反馈控制 在系统底层兜底,慢慢修正那些不可预测的、微小的残余误差。

例如在服务器自动扩容场景:

  • 反馈控制:监控发现CPU利用率已达90%(偏离了预设的60%安全目标),触发规则,自动扩容两台新服务器。
  • 前馈控制:系统监控流量增长曲线,预测在10分钟后负载将突破阈值,于是提前5分钟自动扩容多台服务器。

闭环控制风格的3C模型设计

作为一种架构风格,闭环控制风格也遵循组件、连接件、约束的3C模型。

组件

系统主要由三类核心元素构成:

  • 监视器:负责持续检测环境数据或干扰因素,判断当前状态与目标的偏差。
  • 控制器:接收监视器传来的数据,基于预设目标进行比较、计算和分析,动态制定下一步的调整策略。
  • 执行器:接收控制器的指令,执行具体的调整动作,改变环境或系统状态。

连接件

定义了组件间的交互方式:

  • 连续数据/控制流:组件间不再是单次调用,而是持续的、周期性的数据流动。监视器向控制器传递“环境数值流”,控制器向执行器传递“控制指令流”。
  • 反馈回路:这是该风格最核心的连接件。在执行器和监视器之间建立一条反向通道,使执行结果能被实时收集并反馈给监视器,形成闭环。

约束

定义了系统必须遵守的规则:

  • 闭环回路:系统必须在逻辑或物理上形成一个完整的圆环(环境->监视->控制->执行->环境),这是区别于开环的根本。
  • 实时性:感知、决策、执行的全过程必须是周期性、连续或准连续地执行。
  • 动态调整:系统必须具备根据环境反馈动态调整策略的能力,以保证目标的达成。

总而言之,闭环控制风格就是通过感知(监视器)、决策(控制器)、执行(执行器) 三大组件的协作,依托反馈回路实时性约束,使软件系统能够动态适应现实世界的不确定性。

闭环控制架构风格流程图

希望这篇关于闭环控制架构风格的解析,能帮助你理解如何在动态系统中设计自适应能力。如果你想深入探讨更多系统设计话题,欢迎来云栈社区交流。




上一篇:AirPods Pro新品爆料:或搭载红外摄像头,迈向AI助手新形态
下一篇:AI大模型路线之争:OpenAI与Anthropic、快手与智谱的市场表现深度分析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 23:40 , Processed in 0.711005 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表