一、初识Kakfa
1、主题与分区。
Kafka消息以主题来分类。
主题可分为若干个分区。
一个分区就是一个提交日志。消息以追加的方式写入分区,后以先进先出的顺序读取。Kafka不保证分区间消息的顺序,但保证单个分区的消息顺序。
Kafka通过分区实现数据冗余和伸缩性。分区可分布在不同的服务器上,即一个主题可以跨越多个服务器,以此提高更强大的性能。
2、生产者与消费者
Kakfa系统的用户 -- Kafka的客户端,分为两种类型:生产者和消费者。
此外的高级客户端API:
数据集成:Kafka Connect API;
流式处理:Kafka Streams。
这些高级API使用生产者与消费者作为内部组件,提供高级功能。
生产者:创建消息。
默认情况下,消息会被均衡分布到主题的所有分区。
分区器为消息键生成一个散列,并映射到指定的分区,以此实现特定消息写入特定分区。
消费者:读取消息。
消费者可订阅一个或者多个主题,并按消息生成的顺序进行读取。
以检查消息的偏移量来区分已读取消息。
消费者是消费者群组的一部分,一个主题可被一个或多个消费者读取。群组保证一个分区最多只能被一个消费者使用。
消费者到分区的映射也称为消费者对分区的所有权关系。
偏移量:元数据,不断递增的整数值;消息创建时被加入;特定分区,消息偏移量唯一。Kafka 0.90.0 版本将其保存在 Zookeeper,0.10.0 版本保存在特定内部主题 _consumer_offset_。
3、broker 和集群
broker:一个独立的Kafka服务器。
broker接收来自生产者的消息,为消息设置偏移量,并提交到磁盘保存。
broker是集群的组成部分。每个集群都由一个broker充当集群控制器,负责管理:分区分配给broker,监控broker。
集群中,一个分区从属一个broker,即此broker为该分区首领leader。一个分区可以分配给多个broker进行分区复制,进而来实现消息冗余。
保留消息:默认的消息保留策略,保留一段时间的消息,或保留一定大小的字节数的消息。主题可自行配置自己的保留策略。




