Aeron可以提供什么类型的消息传递保证?

  • 本文关键字:消息传递 类型 Aeron aeron
  • 更新时间 :
  • 英文 :


作为消息传递框架,Aeron为我提供了哪些消息传递保证(至少一次,最多一次,正好一次)?

如果没有消费应用程序的配合,任何消息传递系统都无法提供有保证的传递。这种合作是由与Aeron cluster一起运行的集群服务提供的。

Aeron Archive提供了消息的持久存储,Aeron Cluster用Raft协议扩展了这一点,为集群的一小部分提供容错。要包含最终应用程序,需要集群服务实现的协作。这种合作可以扩展到外部应用程序,但需要专门的技能和理解来确保保证。

用这些术语来思考Aeron并不能真正帮助你理解,因为Aeron在可靠性选项方面是灵活的——特别是当归档和集群也被考虑在内时。最好的回答是"最多一次",但这隐藏了很多细节。

如README中所述。md, Aeron是第4层协议。因此,可靠性选项类似于使用TCP所获得的选项。只要远端还活着,并且心跳还在跳动,丢失的消息就会重新发送。不过,这个一般要求可以放宽。对于多节点分布(组播和MDC),流量控制设置会影响可靠性。例如,使用max策略意味着,如果其中一个接收器报告它是最新的,则流量控制窗口可以向前移动,而其他较慢的接收器可能最终丢失无法获取的数据。即使使用min策略,长时间无响应的较慢的接收器也可能退出流量控制组并被抛在后面。也有选项禁用从接收器的nakking,因此任何损失将填补空白。

允许在这些情况下进行恢复,这就是Archive的作用,因为它允许存储消息以启用"延迟连接"。的行为。因此,如果一旦存档确认存储了一条消息,那么您可以认为这是"恰好一次"。在实践中。

Cluster通过使用仲裁协议将此提升到下一个级别,以防止在节点故障的情况下消息丢失。

最新更新