kafka流处理平台
一、kafka有三个特性1、可以发布和订阅数据的流,类似于一个消息队列2、数据流存储的平台并具备错误容忍3、当数据产生时就可以对消息进行处理。面向数据流的生产、转换、存储、消费的流数据二、基本概念Producer:消息和数据的生产者,向kafka的一个topic发布消息的进程/代码/服务Consumer:消息和数据的消费者,订阅数据(Topic)并且处理发布的消息的...
一、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、操作系统将数据从内核拷贝到网卡缓冲区中,以便将数据经网络发出。
更多推荐
所有评论(0)