成功写入Kafka Broker 1上的领导者分区的消息会发生什么,并且Broker 1崩溃并在以后出现?
答案 0 :(得分:0)
如果成功写入 ,那么只要代理启动,订阅该主题的任何使用者都可以使用该消息。 引用官方文档:
在分布式系统术语中,我们仅尝试处理故障的“失败/恢复”模型,其中节点突然停止工作,然后又恢复(也许不知道它们已经死亡)。 Kafka不处理所谓的“拜占庭式”故障,在这种故障中,节点会产生任意或恶意的响应(可能是由于错误或犯规行为引起的)。
如果您有多个代理,则分区的领导者将在代理之间平均分配。来自文档的更多信息:
我们现在可以更精确地定义当该分区的所有同步副本将消息应用于日志时,该消息被视为已提交。仅将已提交的消息发送给消费者。这意味着用户不必担心如果领导者失败可能会看到丢失的消息。另一方面,生产者可以根据等待时间和持久性之间的权衡选择,选择是否等待消息提交。此首选项由生产者使用的acks设置控制。请注意,主题具有用于同步副本的“最小数量”的设置,当生产者请求确认已将消息写入完整的同步副本集时,将检查该设置。如果生产者请求了一个不太严格的确认,那么即使同步副本的数量少于最小值(例如,它可以像领导者一样低),消息也可以被提交和使用。 >
Kafka提供的保证是,只要始终有至少一个同步副本处于活动状态,提交的消息就不会丢失。
在短暂的故障转移期过后,如果出现节点故障,Kafka将保持可用,但是在存在网络分区的情况下,Kafka可能保持不可用。
要了解复制在Kafka中的工作方式,请访问this文档。