至多一次和恰好一次

2023-12-19

我正在研究分布式系统,当涉及到 RPC 部分时,我听说过这两种语义(最多一次和恰好一次)。据我所知,当我们不希望重复执行时,最多一次用于数据库实例。

第一个问题:

这是如何实现的?服务器如何知道它不应该再次执行该请求?它可能是重复的,但也可能是合法的请求。

第二个问题是:

标题中的两个语义有什么区别?我会读 :)。我知道 at-most-once 可能根本不会被执行,但是,exactly-once 是如何保证执行的呢?


这是对不同之处的很好的解释消息传递语义的类型 https://www.ably.io/blog/achieving-exactly-once-message-processing-with-ably/#types-of-messaging-semantics对于你的第二个问题:

最多一次语义:从工程复杂性的角度来看,这是最容易实现的语义类型,因为它可以通过“即发即忘”的方式完成。系统组件很少需要有状态。虽然它是最容易实现的,但最多一次也是最不理想的消息传递语义类型。它不提供绝对的消息传递保证,因为每条消息都传递一次(最好的情况)或根本不传递。

至少一次语义:这是对最多一次语义的改进。可能会多次尝试传递消息,因此至少有一次尝试成功。换句话说,消息有可能重复,但不会丢失。虽然作为系统范围的特性并不理想,但至少一次语义对于不太关心数据重复的用例或消费者端可以进行重复数据删除的场景来说已经足够好了。

恰好一次语义:最终的消息传递保证和数据完整性方面的最佳选择。顾名思义,精确一次语义意味着每条消息都精确传递一次。消息既不会丢失,也不会传递两次(或更多次)。 Exactly-once 是迄今为止最可靠的消息传递保证。这也是最难实现的。

这就是这篇博文的全部内容一次性消息处理 https://www.ably.io/blog/achieving-exactly-once-message-processing-with-ably/(披露:我工作于Ably https://www.ably.com/)

希望这有帮助????

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

至多一次和恰好一次 的相关文章

随机推荐