如果成功地将消息写入kafka broker 1上的leader分区,并且broker 1崩溃并在稍后出现,那么这些消息会发生什么变化?
23c0lvtd1#
如果编写成功,那么每当代理启动时,订阅该主题的任何使用者都可以使用这些消息。引用官方文件:在分布式系统术语中,我们只尝试处理“失败/恢复”故障模型,其中节点突然停止工作,然后进行恢复(可能不知道它们已经死亡)。Kafka不处理所谓的“拜占庭式”故障,即节点产生任意或恶意响应(可能是由于bug或恶作剧)。如果您有多个代理,那么分区的前导会均匀地分布在代理中。更多文档:现在,我们可以更精确地定义,当该分区的所有同步副本都将消息应用于其日志时,该消息被视为已提交。只有提交的消息才会发送给消费者。这意味着,消费者不必担心看到潜在的信息,如果领导者失败,这些信息可能会丢失。另一方面,生产者可以选择是否等待消息被提交,这取决于他们对延迟和持久性之间的权衡的偏好。此首选项由生产者使用的acks设置控制。请注意,主题有一个同步副本的“最小数量”设置,当生产者请求确认消息已写入完整的同步副本集时,将检查该设置。如果生产者请求了不太严格的确认,则可以提交和使用消息,即使同步副本的数量低于最小值(例如,它可以低至仅领先者)。kafka提供的保证是,只要始终至少有一个同步副本处于活动状态,提交的消息就不会丢失。kafka在短时间的故障转移期后,在出现节点故障时仍然可用,但在出现网络分区时可能不可用。要了解复制在kafka中的工作原理,请访问此文档。
1条答案
按热度按时间23c0lvtd1#
如果编写成功,那么每当代理启动时,订阅该主题的任何使用者都可以使用这些消息。引用官方文件:
在分布式系统术语中,我们只尝试处理“失败/恢复”故障模型,其中节点突然停止工作,然后进行恢复(可能不知道它们已经死亡)。Kafka不处理所谓的“拜占庭式”故障,即节点产生任意或恶意响应(可能是由于bug或恶作剧)。
如果您有多个代理,那么分区的前导会均匀地分布在代理中。更多文档:
现在,我们可以更精确地定义,当该分区的所有同步副本都将消息应用于其日志时,该消息被视为已提交。只有提交的消息才会发送给消费者。这意味着,消费者不必担心看到潜在的信息,如果领导者失败,这些信息可能会丢失。另一方面,生产者可以选择是否等待消息被提交,这取决于他们对延迟和持久性之间的权衡的偏好。此首选项由生产者使用的acks设置控制。请注意,主题有一个同步副本的“最小数量”设置,当生产者请求确认消息已写入完整的同步副本集时,将检查该设置。如果生产者请求了不太严格的确认,则可以提交和使用消息,即使同步副本的数量低于最小值(例如,它可以低至仅领先者)。
kafka提供的保证是,只要始终至少有一个同步副本处于活动状态,提交的消息就不会丢失。
kafka在短时间的故障转移期后,在出现节点故障时仍然可用,但在出现网络分区时可能不可用。
要了解复制在kafka中的工作原理,请访问此文档。