kafka流处理平台

一、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、操作系统将数据从内核拷贝到网卡缓冲区中,以便将数据经网络发出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值