Kafka的学习笔记
这是一个消息队列
kafka包含Topic,Partition,Consumer,Producer,副本等概念。
消息系统
kafka和传统的消息系统都具备系统解耦,荣誉存储,流量削峰,缓冲,异步通信,拓展性,可恢复性等功能。与此同时kafka提供了消息顺序性保障和回溯消费的能力。
存储系统
存在磁盘
流式处理
kafka提供了一系列工具库,完成流式处理的 窗口,链接,变换,聚合等各类操作。
Kafka整体架构
生产者生产给许多个kafka broker
消费者从中获取,
还有一个Zookeepeer集群,用来控制各个broker、的管理和选举操作。
- Producer:生产者,消息发送方
- Consumer:消费者,接收消息的一方,进行业务逻辑的处理。
- Broker:服务代理节点。对于kafka而言,Broker可以简单看成kafka的服务实例。
Kafka的重要概念
主题Topic和分区Partition
kafka集群中的生产者需要指定一个Topic,通过这个东西来进行归类,消费者负责订阅主题并进行消费。
主题只是一个逻辑上的概念,可以细分为很多分区。一个分区只是一个单个主题,很多时候会把分区称为主题分区。同一主题下的消息是不同的。每一个消息将会被分配一个offset。唯一标识一个消息。
一个Topic竟然可以横跨多个Broker。需要在一开始的时候就设置好。
消费者与消费组
每一个消费者都有一个消费组,当消息发布到主题后,只会被投递给订阅他的每个消费组中的一个消费者。
假设一个Topic四个分区Partition,P0,P1,P2,P3. C0123为A组,C45为B组,订阅之后kafka会给每一个分区对应上一个消费者,均匀分配消息。如果消费者比分区多则会有饥饿。也可以自定义。
Kafka存储结构
一个分区多个Log,LogSegment是一个单位,存储index,时间等信息。