知识卡片

涌现行为:事件驱动系统的双刃剑特性

普通读书笔记卡

内容

[[事件的定义与发送方不在乎的核心特征]]描述的这种”发送方不知道谁会响应”的机制,带来了事件驱动系统一个非常重要的特性——涌现行为:这是一种只能在运行时通过实际观测才能了解到的行为,未必是事先设计好的,更多是从各个响应式组件的交互中自然涌现出来的;选择事件驱动架构往往正是刻意朝这个方向发展的决策,这种不确定性不一定是坏事。但涌现行为是有代价的:某些情况下它带来灵活性,某些情况下则可能造成混乱,让你彻底无法理解系统当下的真实状况——能否判断出这个临界点在哪里,往往就是架构成功和失败的分界线。Martin Fowler对此有过明确警告:”虽然许多学者称赞意外涌现的价值,但事实是,涌现行为有时可能是一件坏事。”这提醒从业者必须自己判断”多少涌现行为是健康的”,不能把”涌现”本身当成无条件的架构优点来追求。用事件链去实现一条完整业务流程,正是涌现行为从”还不错”滑向”有问题”的典型场景,这一点会在事件链相关的卡片中具体展开。

参考来源

- 位置:《流程自动化实战:系统架构和软件开发视角》第8章《平衡编排与编制》"8.1.1 涌现行为"(源文件:_epub-src/EPUB/xhtml/Section0001_0012.xhtml) - 结论依据:原文定义涌现行为为运行时才能观测到、非事先设计的行为,并引用Martin Fowler对涌现行为"有时是坏事"的警告,说明识别健康涌现与有害涌现的临界点是架构成败的关键,直接支撑本卡片结论。 - 原始内容:这是仅在运行时通过观测才能了解到的行为。它不一定是事先设计好的,更可能是在运行时从响应式组件中涌现出来的……虽然许多学者称赞意外涌现的价值,但事实是,涌现行为有时可能是一件坏事。