首页 > 其他分享 >Kafka 的高可用原理

Kafka 的高可用原理

时间:2024-01-25 23:24:09浏览次数:28  
标签:0.8 可用 Partition Broker Kafka Follower 原理 Leader

Kafka 集群由若干个 Broker 组成,Topic 由若干个 Partition 组成,每个 Partition 可存在不同的 Broker 上。可以这样说,一个 Topic 的数据,分散在多个机器上,即每个机器上都存放一部分数据。

Kafka 0.8 以前

Kafka 0.8 以前是没有高可用机制的。

假设一个 Topic,由 3 个 Partiton 组成。3 个 Partition 在不同机器上,如果其中某一台机器宕掉了,则 Topic 的部分数据就丢失了。

Kafka 0.8 以后

Kafka 0.8 以后,通过副本机制来实现高可用。

每个 Partition 的数据都会同步到其他机器上,形成多个 Partition 副本。从每个 Partition 的副本集合中,选举出 Leader,其他的都是 Follower。Producer 和 Consumer 就和 Leader 打交道:

  • 写数据时,Leader 会将所用数据都同步到 Follower 上
  • 读数据时,直接读取 Leader 上的数据

这样,若某个 Broker 宕机了,Broker 上的 Partition 在其他机器上是有副本的;若宕机的 Broker 上面有某个 Partition 的 Leader,则此时会从 Follower 中重新选择一个新的 Leader 出来。

注意:Leader 的读写细节

  • 写数据时,Producer 向 Leader 写入,接着其他 Follower 主动从 Leader 中 pull 数据,当所有 Follower 同步好数据,就发送确认信息给 Leader,Leader 收到 Follower 的确认后,就返回写成功消息给 Producer。
  • 读数据时,只会从 Leader 中读取,但当只有一个消息已被所有 Follower 都同步成功,返回确认后时,这个消息才被消费者读到。

参考:

标签:0.8,可用,Partition,Broker,Kafka,Follower,原理,Leader
From: https://www.cnblogs.com/i9code/p/17988402

相关文章

  • Kafka 特性总结
    Kafka特性可总结如下:1.高可用Kafka0.8以前是没有高可用机制的。Kafka0.8以后,通过副本机制来实现高可用,基于副本机制实现Kafka的高可用。2.持久性Kafka集群接收到Producer发过来的消息后,将其持久化到磁盘。此外,还支持数据备份。3.数据不易丢失通过合理的配置,Ka......
  • TCP与UDP协议的区别以及原理
    网络(11):TCP与UDP协议的区别以及原理TCP和UDP协议的区别以及原理最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。一、作用首先,tcp和udp都是工作在传输层,用于程序之间传输数据的。数据一般包含:文件类型,视频类型,jpg图片等。二、区别TCP是基于连接的,而UDP是基于非连接......
  • 【完整版教程】iOS混淆加固原理篇
    引言在iOS开发中,应用程序的安全性和保护显得尤为重要。由于iOS系统的开放性,一些逆向工具可以轻松地对应用程序进行反编译和分析,从而导致应用程序源代码、算法和敏感信息的泄露。为了保护应用程序的安全性,我们需要对应用程序进行混淆加固。本文将介绍iOS混淆加固的原理和常见的加......
  • 解决Active Directory域服务当前不可用
    在使用Windows操作系统时,企业和组织通常会使用ActiveDirectory(AD)作为身份验证和访问控制的核心工具。然而,有时会遇到ActiveDirectory域服务当前不可用的问题,这会导致用户无法登录或访问网络资源。本文将探讨这个常见问题的解决方法,帮助用户快速恢复正常的域服务连接。 1.计......
  • 袋鼠云数栈产品中 AI+ 实现原理剖析
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:修能生产力工具+AI是不可逆转的趋势,慢慢的大模型能力通过AIAgent落地的工程化能力也开始趋于成熟。作为大数据产品的数栈也必然是......
  • Go语言实现HTTP代理的原理与步骤
    在计算机网络中,代理服务器是一种重要的中间件,它能够帮助客户端和服务器进行通信,并处理各种网络请求和响应。在Go语言中,我们可以使用标准库中的"net/http"包来实现一个简单的HTTP代理服务器。下面我们将介绍实现HTTP代理的原理与步骤。一、代理服务器的工作原理代理服务器的工作原理......
  • Unity 的行为决策树的技术原理
    Unity的行为决策树是一种强大的工具,用于创建复杂的游戏人工智能(AI)。行为决策树是一种图形化的编程工具,它可以将游戏角色的行为和决策过程可视化,从而使开发人员更容易理解和调试游戏AI。在本文中,我们将详细讲解Unity的行为决策树的技术原理,并给出相应的代码实现。对啦!这里有个游戏......
  • kafka为什么不支持读写分离?
    在kafka中,生产者写入消息,消费者读取消息的操作都是与leader副本进行交互的,从而实现的是一种主写主读的生产消费模型。kafka不支持读写分离,也就是主写从读。读写分离有以下不足:(1)主从延时。类似Redis,数据从写入主节点,再同步到从节点中的过程需要耗费一些时间。如果对延时的......
  • 系统可用性几个9
    大家好,又见面了,我是你们的朋友全栈君。 经常看到各种技术文章或者分布式系统介绍说系统的可用性达到了多少个9,那么所谓”几个9“到底是怎么计算的?又意味着什么?我们简单计算分析下看看。所谓”1个9“是指90%,”2个9“是指99%,”3个9“是指99.9%,依次类推。可用性的反面是故障时间,......
  • nfs服务的工作原理深入浅出讲解_
    1.NFS挂载原理详细介绍 2.什么是RPC服务 NFS的执行流程工作原理:  ......