知识卡片

消息语义分层

普通读书笔记卡 · 1777.b

内容

实时系统的可靠性通常分为最多一次、至少一次和恰好一次。语义越强,越需要消息确认、重放、去重和状态快照;吞吐与延迟也会随之付出代价。

参考来源

- 位置:《大数据日知录:架构与算法》第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)则通过重复检测保证即使多次发送某条消息,也不会被多次处理。两者联合即实现了"恰好送达一次"的语义。