Aki*_*inn 13 cassandra apache-kafka apache-storm apache-flink
我正在研究分布式系统并参考这个老问题:stackoverflow链接
我真的无法理解完全一次,至少一次和最多一次保证之间的区别,我在Kafka,Flink和Storm以及Cassandra中也读到了这些概念.例如有人说Flink更好,因为只有一次保证,而Storm只有至少一次.
我知道,一次性模式对延迟更好,但同时对于容错更糟糕吗?如果我没有重复,如何恢复流?然后......如果这是一个真正的问题,为什么一次保证被认为比其他保证更好?
有人可以给我更好的定义吗?
Ami*_*mar 26
以下定义引自Akka Documentation
最多一次 交付
意味着对于传递给机制的每条消息,该消息被传递零次或一次; 从更随意的角度来看,这意味着消息可能会丢失.
至少一次 交付
意味着对于传递给该机制的每个消息,可能在交付它时进行多次尝试,使得至少一次成功; 再次,从更随意的角度来看,这意味着消息可能会重复但不会丢失.
准确一次 交货
意味着对于递交给机制的每个消息,只有一个传递给接收者; 消息既不会丢失也不会重复.
第一个是最便宜的最高性能,最少的实现开销 - 因为它可以以一种即发即忘的方式完成,而不会在发送端或传输机制中保持状态.第二个需要重试以对抗传输损耗,这意味着将状态保持在发送端并且在接收端具有确认机制.第三个是最昂贵的 - 并且因此具有最差的性能 - 因为除了第二个之外它还需要将状态保持在接收端以便过滤掉重复的交付
| 归档时间: |
|
| 查看次数: |
6588 次 |
| 最近记录: |