最近,confluent
社区发表了一篇文章,主要讲述了Kafka
未来的2.8
版本将要放弃Zookeeper
,这对于Kafka
用户来说,是一个重要的改进。之前部署Kafka
就必须得部署Zookeeper
,而之后就只要单独部署Kafka
就行了。
1.Kafka简介
Apache Kafka
最早是由Linkedin
公司开发,后来捐献给了Apack
基金会。
Kafka
被官方定义为分布式流式处理平台,因为具备高吞吐、可持久化、可水平扩展等特性而被广泛使用。目前Kafka
具体如下功能:
-
消息队列,
Kafka
具有系统解耦、流量削峰、缓冲、异步通信等消息队列的功能。 -
分布式存储系统,
Kafka
可以把消息持久化,同时用多副本来实现故障转移,可以作为数据存储系统来使用。 -
实时数据处理,
Kafka
提供了一些和数据处理相关的组件,比如Kafka Streams
、Kafka Connect
,具备了实时数据的处理功能。
下面这张图是Kafka
的消息模型:
通过上面这张图,介绍一下Kafka
中的几个主要概念:
-
producer
和consumer
: 消息队列中的生产者和消费者,生产者将消息推送到队列,消费者从队列中拉取消息。 -
consumer group
:消费者集合,这些消费者可以并行消费同一个topic
下不同partition
中的消息。 -
broker
:Kafka
集群中的服务器。 -
topic
:消息的分类。 -
partition
:topic
物理上的分组,一个topic
可以有partition
,每个partition
中的消息会被分配一个有序的id
作为offset
。每个consumer group
只能有一个消费者来消费一个partition
。
2.Kafka和Zookeeper关系
Kafka架构如下图: