Kafka概述、介绍
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以收集并处理用户在网站中的所有动作流数据以及物联网设备的采样信息。
Apache Kafka是Apache软件基金会的开源的流处理平台,该平台提供了消息的订阅与发布的消息队列,一般用作系统间解耦、异步通信、削峰填谷等作用。同时Kafka又提供了Kafka streaming插件包实现了实时在线流处理。相比较一些专业的流处埋框架不同,Kafka Streaming计算是运行在应用端,具有简单、入门要求低、部署方便等优点。
kafka包括
- 消息队列Message Queue
- Kafka Streaming 流处理
消息队列加载在流计算之前主要是为了给流计算做缓冲,消息队列加载在数据库之前主要是降低流计算给数据库带来的冲击
- 异步通信
- 模块与模块间的解耦
- 应用于大流量场景,削峰填谷
流处理相对于storm/spark stream/flink kafka也有不可替代的点,在应用端,易部署
kafka的基础架构
kafka集群以Topic形式负责分类集群中的Record,每一个Record属于一个Topic,每个Topic底层都会对应一组分区的日志用于持久化Topic中的Record。同时在Kafka集群中,Topic的每一个日志的分区都一定会有一个Borker担当该分区的leader,其他的Broker担当该分区的follower。Leader负责分区数据的读写操作,follower负责同步改分区的数据。这样如果分区的leader宕机,该分区的其他follower会选取出新的leader继续负责该分区数据的读写.其中集群的中Leaderi的监控和Topic的部分元数据是存储Zookeeper中。