Kafka技术架构那些事儿

640?wx_fmt=png 640?wx_fmt=png 640?wx_fmt=png 640?wx_fmt=png


在这篇文章中,我们将一起学习Apache Kafka的架构,ZooKeeper扮演的角色等等。

目标

在这个文章中,我们将学习Kafka基础知识、Kafka交付语义和配置,以实现不同的语义、激发Kafka集成和优化。在本系列的第1部分中,让我们理解Kafka的基本原理。在本系列的第2部分中,我们将进一步了解Kafka Producer及其配置的更多信息。

问题陈述

许多源和目标系统需要集成。通常,许多系统的集成涉及复杂的问题,比如处理许多协议、消息格式等。

消息系统处理高容量流。

640?wx_fmt=png

用例

流处理

跟踪用户活动,日志聚合等

去耦系统

640?wx_fmt=png

什么是Kafka?

Kafka是一个可水平扩展,容错,快速的消息传递系统。它是一个pub-sub模型,各种生产者和消费者可以在其中进行书写和阅读。它将源系统和目标系统分离。一些关键功能是:

扩展到数百个节点。

每秒可以处理数百万条消息。

实时处理(~10ms)。

640?wx_fmt=png

关键术语

主题,分区和偏移

主题是特定的数据流。它与NoSQL数据库中的表非常相似。与NoSQL数据库中的表一样,该主题被拆分为分区,使主题能够分布在各个节点上。与表中的主键一样,主题具有每个分区的偏移量。您可以使用其主题,分区和偏移量唯一标识消息。

640?wx_fmt=png

分区

分区使主题可以在群集中分布。分区是水平可伸缩性的并行度单位。一个主题可以跨节点进行多个分区扩展。

640?wx_fmt=png

消息根据分区键分配给分区; 如果没有分区键,则随机分配该分区。使用正确的密钥来避免热点非常重要。

640?wx_fmt=png

分区中的每个消息都被分配一个称为偏移量的增量ID。每个分区的偏移量是唯一的,消息只在分区内排序。写入分区的消息是不可变的。

Kafka架构图

640?wx_fmt=png

ZooKeeper

ZooKeeper是一种用于管理分布式系统的集中式服务。它为其管理的分布式系统提供分层键值存储,配置,同步和名称注册服务。ZooKeeper充当集合层(将事物联系在一起)并确保Kafka集群的高可用性。Kafka节点也称为代理。重要的是要理解Kafka在没有ZooKeeper的情况下无法工作。

从ZooKeeper节点列表中,其中一个节点被选为领导者,其余节点跟随领导者。在ZooKeeper节点发生故障的情况下,其中一个关注者被选为领导者。强烈建议使用多个节点以实现高可用性,不建议使用超过7个节点。

ZooKeeper存储元数据和Kafka集群的当前状态。例如,主题名称,分区数量,复制,请愿的领导者详细信息以及消费者组详细信息等详细信息存储在ZooKeeper中。您可以将ZooKeeper视为项目经理,他负责管理项目中的资源并记住项目的状态。

640?wx_fmt=png

关键事项:

管理经纪人名单。

当经纪人破产时选举经纪人领导。

发送有关新代理、新主题、已删除主题、丢失代理等的通知。

从Kafka0.10开始,消费者偏移不存储在ZooKeeper中,只有集群的元数据存储在ZooKeepr中。

ZooKeepr中的领导者处理所有写入和跟随者ZooKeepr只处理读取。

Broker

一个broker是由ZooKeeper管理的单个Kafka节点。一组brokers组成了Kafka集群。在Kaka中创建的主题基于分区,复制和其他因素分布在broker中。当broker节点基于ZooKeeper中存储的状态失败时,它会自动重新平衡群集,如果领导分区丢失,则其中一个跟随者请求被选为领导者。


640?wx_fmt=png

您可以将broker视为负责分配任务的团队负责人。如果团队负责人不可用,那么经理负

责将任务分配给其他团队成员。

复制


640?wx_fmt=png

复制正在另一个代理中提供分区的副本。复制使Kafka具有容错能力。当主题的分区在

多个代理中可用时,代理中的一个分区被选为领导者,而分区的其余复制是跟随者。


640?wx_fmt=png

复制使Kafka即使在代理关闭时也具有容错能力。例如,主题B分区0存储在代理0和代理1中。生产者和消费者都只由领导者提供服务。在代理失败的情况下,来自另一个代理的分区被选为领导者,并且它开始为生产者和消费者群体提供服务。与领导同步的副本分区标记为ISR(同步副本)。

640?wx_fmt=png

IT团队和Kafka集群类比

下图描绘了IT团队和Kafka集群的类比。


640?wx_fmt=png

摘要

以下是Kafka核心组件的摘要。

640?wx_fmt=png

ZooKeeper管理Kafka经纪人及其元数据。

代理是可水平扩展的Kafka节点,包含主题和复制。

主题是具有一个或多个分区的消息流。

分区包含每个分区具有唯一偏移量的消息。

复制使Kafka能够使用跟随分区进行容错。

看了这篇文章,您有什么收获吗?

640?wx_fmt=jpeg

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值