分布式计算 – KafKa如何保证一致性和可用性?

我从http://engineering.linkedin.com/kafka/intra-cluster-replication-apache-kafka学到了

Our goal was to support replication in a Kafka cluster within a single datacenter, where network partitioning is rare

在分布式系统中,我认为“分区”是基本的,所以我不知道当只有服务器节点失败时,Kafka保证没有分区的可用性.或者我想念一些东西

最佳答案
我认为你可能会混淆与网络分区“分区”的分享感.

Kafka确实提供了分片和复制. Kafka为每个主题的每个分区选择一个独特的领导者.主题分区的所有写入都通过领导者.这与您引用的文档相关,表明Kafka支持可用性超过分区容差.

网络分区的含义是服务器之间的通信中断.网络通信故障在LAN中比在WAN中更少见,因此Kafka的架构旨在提供一致性,除非发生网络分区.在网络分区的情况下,Kafka的副本可能彼此分离,分区两侧的节点可能接受写入.可能发生这种情况的原因是,当网络分区发生时,分区每侧的节点可以感知到分区另一侧的节点已经失败,而实际上它们之间的链路只是失败.这意味着网络分区的每一侧可以为某些主题分区选择新的领导者,因此意味着网络分区的每一侧都可以接受某些主题分区的写入.一旦网络分区恢复(网络是固定的),在分区的一侧进行的写入可能会覆盖在分区另一侧进行的写入.

转载注明原文:分布式计算 – KafKa如何保证一致性和可用性? - 代码日志