知识卡片
消息语义分层
内容
实时系统的可靠性通常分为最多一次、至少一次和恰好一次。语义越强,越需要消息确认、重放、去重和状态快照;吞吐与延迟也会随之付出代价。
参考来源
- 位置:《大数据日知录:架构与算法》第12章《流式计算》"发送与接收保证机制"及"Storm的状态持久化"一节(源文件:_epub-src/OEBPS/text00017.html)
- 结论依据:原文明确三种送达语义定义:"至多送达一次(At-Most Once Delivery):即上游节点不能保证将消息送达下游节点";"至少送达一次(At-Least Once Delivery):即上游节点保证向下游节点送达一次或者多次相同的数据";"恰好送达一次"需要"ACK消息确认"加"重复检测"共同实现,语义越强所需机制越复杂。
- 原始内容:其一,至少送达一次(At-Least Once Delivery):即上游节点保证向下游节点送达一次或者多次相同的数据……其二,至多送达一次(At-Most Once Delivery):即上游节点不能保证将消息送达下游节点……步骤4)实现了"至少送达一次"语义,即上游节点向下游节点发出数据后,需要下游节点向上游节点发送ACK消息确认……步骤1)则通过重复检测保证即使多次发送某条消息,也不会被多次处理。两者联合即实现了"恰好送达一次"的语义。