《Java 消息中间件·事件驱动架构》附录 A 术语表

六十条事件驱动领域术语,覆盖事件基础、Kafka 生态、一致性模型、流处理与治理五个维度,附中英对照、一句话定义与易混词辨析,可作为架构评审的共同语言速查参考。

怎么用这份术语表

这份术语表不是词典,而是设计评审的共同语言。当架构师说「这个场景应该用 Saga」时,评审者需要确认双方对 Saga 的理解一致——是编排式 Saga 还是协同式 Saga?补偿失败怎么办?有没有人工出口?

术语表按五个维度排列:事件驱动基础、Kafka 生态、一致性模型、流处理、治理与监控。每个术语包含英文原文、中文译名、一句话定义,以及易混词辨析。如果某个术语没有辨析,说明它在当前语境下没有常见的混淆对象。

使用方式:直接跳到对应维度,或者按字母顺序检索。辨析部分尤其重要——很多设计分歧的根源是术语理解不一致。

一、事件驱动基础(12 条)

英文中文定义易混词辨析
Event事件已发生事实的不可变记录,用过去时描述不是命令(Command),命令是祈使意图
Command命令要求系统执行某个动作的意图表达不是事件,命令可能被拒绝,事件不可撤销
Query查询读取系统当前状态的操作,无副作用不是事件也不是命令,查询不改变状态
Event-Driven Architecture事件驱动架构以事件为核心通信机制的分布式架构风格不是「用消息队列替代 RPC」的同义词
CQRS命令查询职责分离读写模型分离,写模型优化一致性,读模型优化查询不是必须两套数据库,读模型可以是投影
SagaSaga 模式长事务拆分为本地事务序列,失败时反向补偿不是 2PC,Saga 是最终一致而非强一致
Outbox Pattern发件箱模式业务数据与事件原子写入本地表,异步转发到消息队列不是事件溯源,Outbox 只保证发送不丢
Event Sourcing事件溯源以事件序列作为系统状态的唯一真相来源不是 CQRS,事件溯源可独立存在
Projection投影/读模型从事件流重建的面向查询的数据视图不是物化视图,投影是消费者维护的
Read Model读模型为查询优化的数据表示,通常由投影生成不是缓存,读模型是持久化的数据副本
Aggregate聚合根领域模型中的一致性边界,同一聚合内强一致不是数据库表,聚合是业务概念
Domain Event领域事件领域模型中状态变化触发的事件,有业务语义不是集成事件,领域事件不跨边界

二、Kafka 生态(12 条)

英文中文定义易混词辨析
Topic主题消息的逻辑分类通道,生产者发送消费者订阅不是队列,Topic 可有多消费者
Partition分区Topic 的物理分片,提供并行度和顺序保证不是副本,分区是水平拆分
Offset位移消费者在分区中的读取位置标记不是消息 ID,Offset 是单调递增的序号
Consumer Group消费者组共享消费同一 Topic 的消费者集合,分区自动分配不是单个消费者,Group 内的消费者协同工作
Rebalance重平衡消费者组成员变化时重新分配分区的协议过程不是重启,Rebalance 是 Kafka 的自动协议
ISR同步副本集与 Leader 保持同步的副本集合不是全部副本,ISR 是同步子集
Broker代理/节点Kafka 服务器实例,负责存储和转发消息不是 ZooKeeper,Broker 是数据节点
Producer生产者向 Topic 发送消息的客户端不是发布者,Producer 包含重试和批量逻辑
Consumer消费者从 Topic 读取消息并处理的客户端不是订阅者,Consumer 维护位移和心跳
Leader主副本分区的读写入口,处理所有生产和消费请求不是主节点,每个分区有独立的 Leader
Follower从副本从 Leader 同步数据的备份副本不是消费者,Follower 不参与业务消费
Partition Key分区键决定消息进入哪个分区的字段值不是主键,Partition Key 只影响分区分配

三、一致性模型(12 条)

英文中文定义易混词辨析
ACID原子一致性隔离持久数据库事务的四个保证特性不适用于分布式系统,分布式用 BASE
BASE基本可用软状态最终一致分布式系统的松弛一致性模型不是 ACID 的替代,BASE 是分布式下的取舍
Exactly-Once恰好一次消息被处理且仅被处理一次的语义保证不是天然支持,需要幂等 + 事务协同
At-Least-Once至少一次消息不丢失但可能重复处理的语义不是缺陷,是 Kafka 的默认保证
At-Most-Once至多一次消息不重复但可能丢失的语义不是推荐选项,丢失风险太高
Idempotency幂等性同一操作多次执行结果与一次执行相同不是去重,幂等是去重的前提条件
Compensating Transaction补偿事务Saga 失败时对已执行步骤的反向操作不是回滚,补偿是业务语义的操作
Eventual Consistency最终一致性系统在无新更新的条件下最终达到一致不是弱一致,最终一致有明确的窗口承诺
Strong Consistency强一致性任何时刻所有节点看到的数据一致不是分布式默认,强一致需要共识协议
Distributed Transaction分布式事务跨多个节点或服务的事务操作不是单机事务,分布式事务有额外协调成本
Two-Phase Commit两阶段提交分布式事务的协调协议,分准备和提交两阶段不是 Saga,2PC 是强一致,Saga 是最终一致
TCCTry-Confirm-Cancel业务层面的三阶段分布式事务模式不是 2PC,TCC 是业务实现,2PC 是协议层

四、流处理(12 条)

英文中文定义易混词辨析
Stream Processing流处理对实时到达的数据流进行连续计算处理不是批处理,流处理是逐条或微批处理
KStream流抽象Kafka Streams 中无界事件序列的抽象表示不是 KTable,KStream 不维护当前状态
KTable表抽象Kafka Streams 中基于更新流维护的键值状态视图不是 KStream,KTable 维护当前值
Window窗口流处理中对时间分段聚合的机制不是数据库窗函数,流窗口有时间语义
Tumbling Window翻滚窗口固定大小、不重叠、连续排列的时间窗口不是滑动窗口,翻滚窗口之间无重叠
Sliding Window滑动窗口固定大小但可重叠的时间窗口不是翻滚窗口,滑动窗口有重叠区域
Session Window会话窗口按活动间隙划分的动态大小窗口不是固定窗口,会话窗口大小依赖数据到达模式
Join连接合并两个数据流的操作,按键或时间对齐不是 SQL Join,流 Join 有时间窗口约束
State Store状态存储流处理器维护的本地键值状态不是 Redis,State Store 是 Streams 的内建机制
Changelog变更日志状态存储的变更记录 Topic,用于恢复不是主 Topic,Changelog 只记录状态变化
Topology拓扑流处理图的结构描述,包含源、处理器、汇不是 DAG 的同义词,Topology 有 Streams 特定语义
Processor处理器流拓扑中的计算节点,接收输入并产生输出不是消费者,Processor 是 Streams 内部的计算单元

五、治理与监控(12 条)

英文中文定义易混词辨析
Schema RegistrySchema 注册中心存储和校验事件 Schema 版本的服务不是消息队列,Registry 只管理 Schema
Event Catalog事件目录记录所有事件定义、消费者和版本信息的文档不是 Registry,Catalog 是文档,Registry 是服务
Consumer Contract消费者契约消费者声明其依赖字段和兼容性要求的协议不是 API 契约,Consumer Contract 关注事件字段级别
Dead Letter Queue死信队列存放消费失败消息的专用 Topic,用于后续排查不是垃圾桶,DLQ 的消息需要人工或自动重处理
Lag消费延迟生产者最新 Offset 与消费者当前 Offset 的差值不是处理延迟,Lag 是积压量,处理延迟是耗时
Backpressure背压消费者向生产者反馈处理能力不足的信号机制不是限流,背压是双向反馈,限流是单向控制
Observability可观测性通过日志、指标、追踪了解系统内部状态的能力不是监控,可观测性涵盖 more than 报警
Trace链路追踪跨服务的请求调用链记录,用于定位延迟根因不是日志,Trace 关注调用关系,日志关注事件
Lineage数据血缘数据从产生到消费的完整流转路径和影响关系不是追踪,Lineage 关注数据流向,Trace 关注请求流
Quota配额对资源使用量(带宽、存储)的上限限制不是限流,Quota 是总量控制,限流是速率控制
Retention保留期Topic 中消息保存的时间长度不是 TTL,Retention 是全局配置,TTL 可针对单条
Compaction压缩清理仅保留每条键的最新值、删除旧值的消息清理策略不是删除,Compaction 保留最新,删除是全部清除

术语表的速查用法

评审会上如果术语理解出现分歧,不要争论定义,直接翻出术语表读原文。这份表的设计原则是:一句话定义足够在评审会上使用,不需要背完整概念。

常见分歧场景:

分歧场景术语表解法
「Event 和 Command 到底什么区别?」翻到第 1 条和第 2 条,对比定义
「CQRS 是不是必须读写分离到两个库?」翻到第 5 条,辨析明确指出「不是必须」
「Saga 和 2PC 哪个更好?」翻到第 6 条和第 22 条,对比一致性强弱
「我们的消息保证 Exactly-Once 了吗?」翻到第 14 条,确认需要幂等 + 事务协同
「Lag 大了是不是消费者有问题?」翻到第 52 条,辨析指出 Lag 是积压量不是处理延迟

六十条术语的分布

维度数量核心关注点
事件驱动基础12事件、命令、CQRS、Saga、聚合的语义边界
Kafka 生态12分区、位移、副本、重平衡的技术概念
一致性模型12事务语义、幂等、补偿、最终一致的适用场景
流处理12窗口、连接、状态存储的时间与状态语义
治理与监控12Schema、血缘、配额、可观测性的工具边界

没有覆盖的术语(如 ZooKeeper、Broker 的 JMX 指标、Streams 的 punctuate)不是没有价值,而是它们属于工具层,不在架构讨论的核心范围。如果需要,可以在对应章节的代码注释中找到它们。

本节小结

  • 术语表是评审共同语言,不是词典,辨析部分比对定义更重要。
  • 六十条术语分五个维度排列,覆盖事件基础、Kafka 生态、一致性、流处理、治理监控。
  • 常见分歧可以直接翻到对应条目,避免「你说的 Event 和我说的 Event 不是同一个东西」。
  • 未覆盖的术语(如 ZooKeeper)属于工具层,在代码注释中补充即可。

阅读导航:上一节 15.3 全书验收 | 下一节 附录 B ADR 模板

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「books」更多文章

  1. 《Java 消息中间件·事件驱动架构》附录 B 架构决策记录模板
  2. 《Java 消息中间件·事件驱动架构》15.3 全书验收
  3. 《Java 消息中间件·事件驱动架构》15.2 故障演练剧本