Kafka是什么
Kafka是一个由Scala和java编写的高吞吐量的分布式发布订阅消息
官网地址:http://kafka.apache.org/intro
快速阅读
kafka是一个消息队列.生产者通过网络把消息发到kafka集群,集群向消费者提供消息 。每个消息 以topic为单位。消费者以组为单位。与zookeeper保持心跳连接 。只有在leader不工作时才与follower进行交互 。消费者通过偏移量offset 从指定位置读取消息 ,生产者推送消息 ,消费者拉取消息
KafKa特性
-
持久化消息 存在硬盘上。比较稳定
-
高吞吐量,每秒数百万
-
支持通过Kafka服务器和消费机集群来分区消息。
-
支持Hadoop并行数据加载
架构
定义
-
Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker [5]
-
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
-
Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
-
Producer
负责发布消息到Kafka broker
-
Consumer
消息消费者,向Kafka broker读取消息的客户端。
-
Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
写和读只能从leader中读,Flllower不读。
如果leader挂了。Follower为成leader
偏移量Offset
消费者和集群都和Zookeeper有关系