1、介绍Kafka
Kafka最初由Linkedln(领英)公司发布,使用Scala语言编写,后成为Apache的顶级项目。主要用于处理活跃的数据,如登陆、浏览、点击、分享等用户行为产生的数据。
特点:
· 高吞吐量
可以满足每秒百万级别消息的产生和消费
· 持久性
有一套完善的消息存储机制,确保数据的高效安全的持久化
· 分布式
基于分布式的扩展和容错机制
将数据复制到多台服务器上,当某一台发生故障时,生产者和消费者自动切换到其它服务器上
2、架构
3、组成
Broker节点,Kafka集群中包含多个Kafka服务节点,每一个节点就是一个Broker(Broker里包含多个主题)
Topic主题:用来存储不同类别的消息(Kafka消息数据是储存在硬盘上)(主题里包含分区)
Partition分区:每个Topic包含一个或多个Partition,在创建Topic时指定包含的Partition数量(目的时为了进行分布式存储)
Replication副本:在集群环境下,每个分区可以有多个副本,分布在不同的Broker上,选出一个副本作为Leader(领导者),其余Broker上的副本作为Follower(跟随者),所有的读写请求都会同南宫Leader晚才,Follower只负责备份数据。Follower会自动从Leader中复制数据,当Leader宕机后,会从Follower中选出一个新的Leader继续提供服务,实现故障自动转移
message消息:通讯的基本单位,每个消息都属于一个Partition,消息储存在分区里
Producer生产者:向Kafka的一个topic发布消息
Consumer消费者: 订阅topic并读取其发布的消息,可以订阅多个topic
Consumer Group消费者组:每个Consumer属于一个特定的Consumer Group,多个Consumer可以属于同一个Consumer Group
Zookeeper注册消息: 协调Kafka运行,主要存储Kafka源数据信息(Kafka集群的节点,Broker,Topic等等信息),发送给Topic的消息数据并不存储在ZK中,而是存储在Kafka磁盘文件中
网友评论