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

guykilcj  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(213)

我从中学到了http://engineering.linkedin.com/kafka/intra-cluster-replication-apache-kafka
我们的目标是支持在单个数据中心内的kafka集群中进行复制,而在这个数据中心中很少进行网络分区
在分布式系统中,我认为分区是最基本的,所以我不知道kafka在只有服务器节点发生故障的情况下保证没有分区的可用性。或者我错过了什么

vbopmzt1

vbopmzt11#

我想你可能把“分区”和网络分区混淆了。
Kafka确实提供了切分和复制。Kafka为每个主题的每个分区选出一位独特的领导人。一个主题分区的所有写操作都要经过leader。这与您引用的说明kafka支持可用性而不是分区容差的文档有关。
网络分区的意思是服务器之间的通信中断。网络通信故障在局域网中比在广域网中更为罕见,因此kafka的设计旨在提供一致性,除非发生网络分区。在网络分区的情况下,kafka的副本可能会彼此分离,分区两侧的节点都可能接受写操作。可能发生这种情况的原因是,当网络分区发生时,分区每一侧的节点都可以认为分区另一侧的节点发生了故障,而实际上它们之间的链路只发生了故障。这意味着网络分区的每一侧可以为某些主题分区选择一个新的前导,因此意味着网络分区的每一侧可以接受某些主题分区的写操作。一旦网络分区恢复正常(网络已修复),在分区的一侧进行的写操作可能会覆盖在分区的另一侧进行的写操作。

相关问题