对kafka的初步了解

Kafka是一种分布式的基于发布/订阅的消息系统,旨在提供高效、可靠的消息传递服务。本文介绍了Kafka的设计目标、关键特性及其核心组件,如Broker、Topic、Partition等,并详细解释了这些组件如何共同工作以确保消息的高吞吐量和持久性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kafka简介

  Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:
● 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能
● 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输
● 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输
● 同时支持离线数据处理和实时数据处理


以上是官方对kafka的介绍,可以看出kafka想要解决的主要问题是数据的读取问题,总结下来功能有两点:
1.数据一定能被处理
2.能快速获取需要数据
所以在我看来,可以把kafka看做分布式系统上的“缓冲区”(“内存”?),而kafka的实现方式与数据库有类似之处,很多概念可以和HDFS类比。

Kafka中的概念

● Broker:
Kafka集群包含一个或多个服务器,这种服务器被称为broker。
找一个类比的概念:HDFS的DataNode。
● Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)
● Partition
parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件
● Replication
replication的出现是为了实现资源的持续化和高可用性,换句话说就是保证在单节点宕机时数据不会轻易丢失。
● Leader Election
kafka中leader election有两种概念:
1.基于zookeeper的leader election,对象是consumer。Kafka通过Zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行rebalance。
2.面向partition的leader election,对象是replication。引入replication之后,同一个partition可能会有多个replication,而这时需要在这些replication之间选出一个leader,producer和consumer只与这个leader交互,其它replica作为follower从leader中复制数据。
● Producer
消息的生产者,负责发布消息到Kafka broker。
● Consumer
消息的消费者,每个consumer属于一个特定的consumer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。使用consumer high level API时,同一topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer group可同时消费这一消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值