apache-kafka - Kafka 与 ActiveMQ 的完整性保证?
问题描述
我发现比较 Apache Kafka 和 ActiveMQ(以及类似的消息队列产品)的信息从未清楚地说明每个解决方案的完整性属性(尤其是一致性)。
使用 Kafka,您可以保证即使出现故障也不会丢失任何消息。您是否失去了使用“LazyPersistence”选项的保证?
“无丢失”是指消息对客户端可用,即使在重新启动后失败 - 理想情况下,所有消息都以正确的顺序到达客户端。
ActiveMQ(“经典”或 Artemis)是否保证在失败时不会丢失消息?任何可以提供保证的配置选项?如果“经典”与 Artemis 的答案会有所不同,那会很高兴知道。
解决方案
使用 Kafka,即使出现故障,您也可以保证不会丢失任何消息;我猜你使用“LazyPersistence”选项失去了保证,对吗?
这是一个很大的话题。
保证没有消息丢失
这取决于几件事。首先,您可以配置保留 - 在您可以丢失消息的特定时间段之后。您可能会考虑无限保留,但也要注意您有足够的存储空间,也许您需要压缩主题?
即使出现故障;我猜你使用“LazyPersistence”选项失去了保证,对吗?
Kafka是一个分布式系统,分布式系统比同步磁盘写入更多地依赖分布式复制是很常见的。即使您将同步写入磁盘 - 磁盘也可能会死掉并丢失。您希望在多大程度上使用分布式复制(例如 3 或 6 个副本?)以及同步或异步磁盘写入取决于您的要求 - 但它也需要在吞吐量方面进行权衡。例如, AWS Aurora是一个使用 6 个副本的分布式数据库。
推荐阅读
- python - 如何销毁python中的对象?
- css - 缩小屏幕尺寸时调整宽度和高度
- python - Pandas - 从一列中提取短语并将其添加到新列
- javascript - NodeJS:如何/在哪里保存私有凭证 JSON 文件
- react-native - 选项卡导航器屏幕上的 IntialParams 未定义(反应导航 v5)
- r - How to read rsav file in R
- python - 为什么我的 OR 运算符不能在 python 中工作?
- python - Opencv VideoWriter 临时文件
- flutter - 使用 Flutter Checkbox() 并从 Firestore 获取初始值
- c# - 无法正确配置 WCF Restful/json 端点