一、什么是Kafka
二、名词解释
1、批次:一组同属于一个主题和分区的消息;
2、消息:Kafka的数据单元成为消息;
3、主题:一类消息的统称,消费者通过订阅不同的主题来达到获取不同消息的目的;
4、分区:一个消息日志,消息以追加的方式写入分区(消息队列),分区内消息有序,分区间的消息可能无序;
5、流:一组生产者到消费者的数据;
5、生产者:创建消息的服务叫做生产者,将消息发布到特定的主题中(也可以通过消息健和分区器将消息写入制定的分区)
6、消费者:读取消息的服务叫做消费者,通过订阅一个或多个主题来读取指定的消息(按照消息的生产顺序读取)。通过偏移量区分已经读取过的消息(偏移量是一个递增的整数值),消费者关闭或重启,偏移量也不会丢失。
7、消费者群组:一群订阅同一主题的消费者,群组保证了每个分区只能被一个消费者消费,消费者与分区之间的映射关系成为所有权关系
8、broker:一个独立的Kafka服务器,负责接收生产者的消息并给消息设置偏移量,提交消息到磁盘。broker为消费者服务,对读取分区消息的请求作出响应并返回磁盘上的消息。
9、集群:一群broker的集合,每个集群都有一个broker充当集群控制器(负责将分区分配给broker与监控broker),同时,每个broker中有一个分区作为首领,其他分区从属于首领分区。一个分区可以分配给多个broker(消息全量复制,保证broker失效影响最小)。
三、Kafka的优点
1、解耦:生产者与消费者只要遵守数据约束,就能随意扩充字段
2、高吞吐量、低延迟
3、扩展性:支持热扩展(在集群启动后,可以直接增加机器而不需要重启)
4、容错性:通过分区复制保证broker失效的影响最小
5、支持多种语言
四、Kafka的缺点
1、消息丢失:当ack=0时,可能存在消息丢失情况
2、消息重复:ack=1/ack=all时,生产者没有收到确认,可能会重复发送消息
3、消息乱序:分区间的消息可能乱序
4、消息堆积:如果生产者性能远高于消费者,可能存在大量消息积压无法及时被消费
五、Kafka的用途
1、日志收集
2、消息系统:生产者与消费者解耦
3、用户活动追踪
4、流式处理