Kafka是一个分布式、可分区、可复制的消息系统,Kafka系统设计的术语整理以下:
Topic: Kafka消息以Topic为单位进行管理,Topic为业务逻辑单元。
Producer: 消息发送者,是向Topic发生消息的程序主体。
Consumer: 消息消费者:是从Topic中获取消息进行消费的主体。
Broker: Kafka以集群方式运行,每一个服务进程叫Broker。
Partition: 每一个Topic中可包含一个或多个分区(Partition),每一个分区都有一系列有序的、不可变的消息队列组成,Partition是确保消息有序消费的最小单元。
Consumer Group: 多个Consumer能够组成一个Group,经过Group实现消费者的集群和负责均衡;对于同一条消息,只会被Group中的一个Consumer消费。
Offset:每一个消息队列有一个连续的序号叫Offset,做为队列中消息的标识分布式
Kafka系统消息队列数据生成和消费模型以下。spa
每一个Producer和Consumer分别表示一个线程。线程
和通常的消息队列组件不一样,Kafka可在配置的时间段内,保留消息队列中的全部消息,无论消息是否已经被消费。好比配置的消息保留时间为24小时,则在24小时内,消息能够被重复消费。因为这个特性,Consumer在每消费一条消息时,须要记录当前消息的Offset并持久化,以便在Consumer重启后,知道从什么地方开始消费。固然Consumer启动后,能够从头、从任意位置、从最新消息等任意方式开始消费消息。设计
未完待续...blog