← 有限自动机 · DFA / NFA / regex 与它们之间的转换 / 应用实例:熔断器 Circuit Breaker 状态机 待审核 7 / 7
applications · 真实应用

应用实例:熔断器 Circuit Breaker 状态机

DFA 的用途不止于「识别字符串」——凡是**「系统此刻处于某个状态,来一个事件就跳到下一个状态」**的结构,本质都是一台有限状态机。这里取一个微服务中常见的实例:熔断器 (Circuit Breaker)——它就是一台只有三个 state 的 DFA,在下游故障时保护服务不被拖垮。

三个 state:CLOSED(正常放行)、OPEN(已熔断,请求直接拒绝 fail-fast,不再打到故障的下游)、HALF_OPEN(冷却后放一个试探请求检测下游是否恢复)。事件 = 请求成功 / 失败 / 冷却到期。点下面的按钮发出事件,看它在三个 state 间跳转——这正是 state + transition 的实际形态。

1 · 同一套骨架的不同形态

「state + 一张 transition 表,来事件就跳」——认出这个骨架后,会在许多场景里发现 DFA:

正则引擎 →

Google RE2(Cloudflare 用它在边缘防 ReDoS)、grep、各语言 regex,把模式编译成 NFA/DFA 来线性扫描文本——本系列三条转换正是这条流水线。

词法分析器 lexer

编译器 / JSON / 协议解析的第一步:flex 把正则规则编译成一张 DFA 转移表,逐字符跳状态切出 token。语法高亮同理。

入侵检测 / DPI

Snort、Suricata、Intel Hyperscan 用 NFA/DFA(+ Aho-Corasick)在网络流量里一遍扫出成千上万条攻击特征。

协议与 UI 状态机

TCP 连接(LISTEN→SYN_RCVD→ESTABLISHED…)、订单 / 工单流转、表单向导、播放器(播放 / 暂停 / 缓冲),都是显式的有限状态机。

熔断器这台机器和 DFA 一页的「能被 3 整除」机器结构完全一致——都是「画出 state、连上带条件的边、来一个输入跳一次」。总览页串起它从 regex 一路构造出来的全过程。