一、kafka有三个特性

1、可以发布和订阅数据的流,类似于一个消息队列

2、数据流存储的平台并具备错误容忍

3、当数据产生时就可以对消息进行处理。

面向数据流的生产、转换、存储、消费的流数据

二、基本概念

Producer:消息和数据的生产者,向kafka的一个topic发布消息的进程/代码/服务

Consumer:消息和数据的消费者,订阅数据(Topic)并且处理发布的消息的进程/代码/服务

Consumer Group:逻辑概念,对于同一个topic,会广播给不同的group,一个group中,只有一个consumer可以消费该消息。

Broker:物理概念,KafKa集群中的每个kafka节点

Topic:逻辑概念,kafka消息的类别,对时局进行区分、隔离

Partition:物理概念,kafka下数据存储的基本单元。一个topic数据,会被分散存储到多个Partition,每一个Partition是有序的

Replication(副本、备份):同一个Partition可能会有多个Replica,多个Replica之间数据是一样的

Replication Leader:一个Partition的多个Replica上,需要一个Leader负责该Patition上与Producer和Consumer交互

ReplicaManager:负责管理当前broker所有分区和副本的信息,处理kafkaController发起的一些请求,副本状态的切换、添加/读取消息等

三、Kafka基本结构

 

四、Kafka特点

1、分布式

(1)多分区(partition)

(2)多副本(Replication)

(3)多订阅者(topic)

(4)基于Zookeeper调动

2、高性能

(1)高吞吐量

(2)低延迟

(3)高并发

(4)时间复杂度O(1)

3、持久性与扩展性

(1)数据可持久化

(2)容错性

(3)支持在线水平扩展

(4)消息自动平衡

五、Kafka应用场景

1、消息队列

2、行为跟踪

3、元数据监控

4、日志收集

5、流处理

6、事件源

7、持久性日志(commit log)

六、Kafka消息事务

数据传输的事务定义

1、最多一次:消息不会被重复发送,最多被传输一次,但也有可能一次不传输。

2、最少一次:消息不会被漏发送,最少被传输一次,但也有可能被重复传输。

3、精确的一次:不会漏传输也不会重复传输,每个消息都传输被一次而且仅仅被传输一次。

事务保证

1、内部重试问题:Procedure幂等处理

2、多分区原子写入

事务保证----避免僵尸实例

1、每个事务Producer分配一个transaction.id,在进程重新启动时能够识别相同的Producer实例

2、Kafka增加了一个与transaction.id相关的epoch,存储每个transactionl.id内部元数据。

3、一旦epoch被触发,任何具有相同的transaction.id和更旧的epoch的Producer被视为僵尸,Kafka会拒绝来着这些Procuder的后续事务性写入。

 

七、零拷贝

文件传输到网络的公共数据路径

1、操作系统将数据从磁盘读入到内核空间的页缓存。

2、应用程序将数据从内核空间读入到用户空间缓存中。

3、应用程序将数据写回到内核空间到socket缓存中。

4、操作系统将数据从socket缓冲区复制到网卡缓冲区中,以便将数据经网络发出。

零拷贝过程

1、操作系统将数据从磁盘读入到内核空间的页缓存。

2、将数据的位置和长度的信息的描述符增加至内核空间(socket缓冲区)。

3、操作系统将数据从内核拷贝到网卡缓冲区中,以便将数据经网络发出。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐