🔧 L2 设计层 = 控制律的设计
解决什么问题:把 L1 输出的数学模型,翻译为可构造的控制律(控制器)—— 这个控制律应该满足稳定性、精度、速度、超调、抗扰等指标。
在五层控制闭环中的角色
控制论视角的 L2:
─────────────────────────────────────────────────────
输入: L1 输出的数学模型(状态方程 / 传递函数)
输出: 控制律 u = K(x, ref, t)
—— 给出在任意状态下的控制策略
角色: "如何控制系统?" → 这是 L3 实现的依据
─────────────────────────────────────────────────────
↑
L1 数学模型
↓
L2 控制律设计(本层)
↓
L3 物理实现
↓
L4 反馈调节L2 不是"画架构图"——它是"设计控制律以满足性能指标"。
控制论核心:极点配置
钱学森 §5.5 核心定理:
"状态反馈可以任意配置闭环极点,前提是系统能控。"
给定:L1 的数学模型
ẋ = A·x + B·u
y = C·x
设计:状态反馈增益 K
u = -K·x
目标:闭环极点(特征值)位于任意指定位置
ẋ = (A-BK)·x 的特征值 = 任意指定极点的位置决定了系统的所有动态行为:
极点越靠左(实部越小)→ 系统越快越稳定
极点越靠右 → 系统越慢越不稳定
虚部大小 → 振荡频率
虚部为零 → 无超调(过阻尼)
虚部存在 → 有超调(欠阻尼)控制律设计的四把刀
刀 1:性能指标驱动(极大值原理)
性能指标:J = ∫f₀(x, u, t)dt
设计目标:最小化 J(最优控制)
例:
- 最短时间控制 → min t_f
- 最少能耗控制 → min ∫u²dt
- 综合最优 → 加权多个目标| 控制论方法 | 软件工程对位 |
|---|---|
| 性能指标 J | NFR / SLO |
| 加权综合 | 业务优先级 |
| 最优解 | 架构决策 |
刀 2:复合控制(开环 + 闭环)
复合控制律:
u = u_前馈(x_ref) + u_反馈(error)
u_前馈 = 业务规则(开环,不依赖误差)
u_反馈 = 实时调节(闭环,基于误差)| 复合控制组成 | 软件工程对位 |
|---|---|
| 前馈(开环) | 业务规则 / 静态配置 |
| 反馈(闭环) | 实时监控 + 自动调节 |
| 复合 | 业务规则 + 实时反馈 |
这是软件工程"业务规则 + 实时控制"架构的数学原型。
刀 3:协调控制(互不影响原则)
协调控制律:
设计 K 使得:
- 控制信号 Xⱼ 只影响受控量 Yⱼ
- 不影响其他受控量
数学:对角化(消除非对角元素)| 协调控制 | 软件工程对位 |
|---|---|
| 互不影响子系统 | 限界上下文(BC) |
| 矩阵对角化 | BC 边界划分 |
| 协调偏差修正 | 跨 BC 集成 |
这是 DDD 限界上下文的数学原型——钱学森 1954 年就解决了这个。
刀 4:自适应控制(参数变化时)
自适应律:
当系统参数变化时(如业务增长、流量增加),
自动调整控制律 K 以维持性能指标。| 自适应 | 软件工程对位 |
|---|---|
| 参数辨识 | 业务量识别 |
| 控制器自整定 | 自动扩缩容参数 |
| 性能维持 | SLA 维持 |
性能指标视角
L2 的核心任务:让控制律满足 L1 定义的所有指标。
| 性能指标 | L2 关注什么 |
|---|---|
| 稳定性 | 极点是否都在左半平面 |
| 稳态精度 | 系统增益是否够大 |
| 过渡时间 | 极点的实部 |
| 超调量 | 极点的阻尼 |
| 抗扰性 | 干扰传递函数是否被抑制 |
| 积分指标 | 综合性能是否最优 |
关键:L2 的设计是多目标优化——不可能所有指标都最优,必须取舍。
关键产出物(业务视角)
| 产物 | 它回答的问题 | 关键工具 |
|---|---|---|
| 架构风格 | 用什么结构组织代码?分层?六边形?微服务? | 架构决策记录(ADR) |
| 接口与契约 | 模块之间怎么说话?同步 RPC、异步事件? | OpenAPI / Schema Registry |
| 设计模式 | 典型场景有没有成熟解?CQRS、Saga、Outbox? | 模式目录 |
| 质量属性 | 可维护性、可演化性、可观测性、性能怎么权衡? | NFR 矩阵 |
子主题(group 划分)
- 架构风格——用什么样的骨架来组织代码
- 边界与契约——模块之间怎么说话
- 设计模式——成熟解的复用
- 质量属性——非功能性需求怎么取舍
- 应用案例——端到端贯通的真实场景
阅读路径
新读者:
带着具体问题来的读者:直接进对应 sidebar group。
与其他层的关系
L1 建模 ──输出数学模型──► L2 设计
│
控制律被设计
(极点配置 + 性能指标)
│
▼
L3 实现- L2 是 L1 到 L3 的桥梁:控制律的歧义要在这里被消除
- L2 受 L3 约束:再优雅的设计,落不了地就是空想
- L2 受 L4 校验:跑起来之后,设计是否真的支撑了质量目标
关键洞察
L2 是"设计满足性能指标的控制律"的层。
钱学森 Ch 4 §4.8 原话:"反馈回路的设计可以完全决定系统的稳定性和反应的动力特性"—— 对应到软件工程就是架构和契约的设计决定系统的可演化性。
没有好的控制律设计,再好的模型也只能产出"局部最优"的系统。 L2 决定了系统能走多远。
控制论对位
| 控制论概念 | 本层对应 |
|---|---|
| 极点配置 | 架构核心决策 |
| 性能指标 | NFR 设计 |
| 复合控制 | 业务规则 + 实时控制 |
| 协调控制 | 限界上下文划分 |
| 最优控制 | 架构权衡 |
相关链接
IDDD 在 L2 的核心方法论
L2 设计层 = 控制律的设计 + 软件架构的设计。IDDD Ch 4(架构)+ Ch 13(集成)提供业务架构方法:
| 阶段 | 方法论 | 来源 |
|---|---|---|
| 架构风格选择 | 风险驱动架构 | IDDD Ch 4 |
| 架构边界 | 六边形架构 | IDDD Ch 4 |
| 集成方式 | 集成成熟度模型 | IDDD Ch 13 |
| 微服务决策 | 微服务 vs 单体 | IDDD Ch 4 |
L2 在 IDDD 中 = Ch 4 架构 + Ch 13 集成边界。
核心洞察:架构设计 = 风险识别 + 边界划分 + 集成决策——Ch 4 §4.8"三难" + Ch 9 §9.4"最优存在性"是控制论视角的风险驱动设计。