Kafka是什么
发布/订阅消息中间件
也被称为分布式流平台
Kafka的诞生
最初是为了解决LinkedIn数据通道问题,最后捐献给了Apache,是Apache的*项目。
Kafka适合的场景
- 用户行为跟踪,可以将网页/用户操作等信息发送到kafka中.并实时监控,或者离线统计分析等
- 消息系统,最常见一种场景。应用程序(生产者)产生消息,发送到Kafka,另外一个应用程序消费Kafka的消息。
- 应用系统监控,应用程序定期将系统各指标发送到Kafka,消费者消费进行预测、分析等。
- 日志提交服务,应用可以将操作日志”批量”、”异步”的发送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/压缩消息等
- 流处理,目前Kafak的新定位是流处理平台,实时处理流数据。
Kafka的基本构件
-
topic
主题,Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic
-
partition
分区,一个topic可以分为多个partition,每个partition内部信息是有序的
-
producer
消息生产者,向broker发送消息的客户端
-
comsumer
消息消费者,从broker读取消息的客户端
-
broker
代理服务器,Kafka的消息处理节点。一个Kafka节点就是一个broker,一个或者多个broker可以组成一个Kafka集群
Kafka的特点
-
支持多生产者
Kafka支持多个生产者使用多个topic或者一个topic同时发送消息到broker,无需为每个生产者提供一个broker。
-
支持多消费者
Kafka支持多个消费者订阅单个topic的消息,消费者按组分类,同一个消费组的消费者,只有一个comsumer可以消费消息,不同的消费组默认轮询消费消息。
-
消息支持持久化
消息按照我们的配置选项保存在磁盘,意味着不用担心消息丢失。
-
可扩展
支持集群扩展,当处理的数据增长比较快时,可以扩展broker节点,削峰填谷,不影响系统的整体性能。另外Kafka可以容忍单个或者一部分broker宕机,也不会对系统造成影响。
-
高性能
在高负载下,消息的延迟也很低,在秒级之内。