apache-kafka - Kafka - 消费者视角 - “承诺”消息解释
问题描述
关于消息的“承诺”的概念经常令人困惑。我遇到了这个,来自 https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
只有在成功复制到所有同步副本后,才会提交消息。
我猜这里的“全部”是指依赖于复制因子的所有副本。说,如果复制因子是 3 ,消费者要消费这条消息,消息应该出现在所有副本(不一定是磁盘?)中,而与“acks”设置无关。希望我的理解是正确的。
在这个时间点,因为我们不是生活在理想的世界里,每件事都按预期工作:-) - 其中一个代理已关闭,并且消息由生产者发送 - 假设此消息已确认但未“提交”完全因为一个经纪人倒闭了。
假设这个代理不会永远出现(replica.lag.time.max.ms - 这个值也失效了),我们可以假设消费者默认不能收到这个消息吗?
解决方案
描述中的重要部分是**in-sync** replicas
。不同步的副本不计算在内。
因此,如果代理关闭,它不是任何同步副本的一部分,也不会阻止将记录标记为已提交到日志。这允许经纪人移动他们的高水位线并将此记录公开给消费者。
你是对的,记录不需要被刷新到磁盘上。副本只需要获取它,它仍然可以在内存中。
推荐阅读
- reactjs - 导出时用“withRouter”包装的测试组件
- image - 如何在带有 Jekyll-seo-tag 的帖子上为 Twitter 卡片添加图像?
- apache - 如何删除 php 扩展表单 URL .htaccess
- facebook - 如何使用 c# 从 asp.net 中的 facebook 视频 url 获取 Facebook 视频缩略图
- sql - SSIS包无法执行OPENROWSET存储过程
- python - 尝试使用 python-requests 将 .wav 文件上传到存储桶
- javascript - 如何将 li 项目更改为 div?javascript
- ios - 如何自动将用户分成不同的组(身份池)?
- c++ - 可以在 Boost Graph Library 中即时计算边吗?
- python - 如何将pdf文件中的两页合并为一页