Kafka在目前的大数据技术生态体系当中,是尤其得到重用的,尤其是针对于实时消息流处理,Kafka的性能是值得称赞的。Kafka学习,也是大数据学习当中的重要一课。今天的大数据开发学习分享,我们就主要来讲讲Kafka入门须知的几组核心概念。

概念一:生产者与消费者
 

kafka服务器版本与kafka兼容 kafka服务端与客户端_kafka

对于Kafka来说,客户端有两种基本类型:生产者(Producer)和消费者(Consumer)。除此之外,还有用来做数据集成的Kafka Connect API和流式处理的Kafka Streams等高阶客户端,但这些高阶客户端底层仍然是生产者和消费者API,它们只不过是在上层做了封装。

生产者(也称为发布者)创建消息,而消费者(也称为订阅者)负责消费or读取消息。

概念二:主题(Topic)与分区(Partition)

在Kafka中,消息以主题(Topic)来分类,每一个主题都对应一个「消息队列」,这有点儿类似于数据库中的表。

但是如果我们把所有同类的消息都塞入到一个“中心”队列中,势必缺少可伸缩性,无论是生产者/消费者数目的增加,还是消息数量的增加,都可能耗尽系统的性能或存储。所以引入分区(Partition)的概念,类似“允许多修几条道”的方式对我们的主题完成了水平扩展。

概念三:Broker和集群(Cluster)

一个Kafka服务器也称为Broker,它接受生产者发送的消息并存入磁盘;Broker同时服务消费者拉取分区消息的请求,返回目前已经提交的消息。使用特定的机器硬件,一个Broker每秒可以处理成千上万的分区和百万量级的消息。

若干个Broker组成一个集群(Cluster),其中集群内某个Broker会成为集群控制器(Cluster Controller),它负责管理集群,包括分配分区到Broker、监控Broker故障等。在集群内,一个分区由一个Broker负责,这个Broker也称为这个分区的Leader;当然一个分区可以被复制到多个Broker上来实现冗余,这样当存在Broker故障时可以将其分区重新分配到其他Broker来负责。

概念四:多集群

随着业务发展,我们往往需要多集群,通常处于下面几个原因:

基于数据的隔离;基于安全的隔离;多数据中心(容灾)

当构建多个数据中心时,往往需要实现消息互通。举个例子,假如用户修改了个人资料,那么后续的请求无论被哪个数据中心处理,这个更新需要反映出来。又或者,多个数据中心的数据需要汇总到一个总控中心来做数据分析。

上面说的分区复制冗余机制只适用于同一个Kafka集群内部,对于多个Kafka集群消息同步可以使用Kafka提供的MirrorMaker工具。本质上来说,MirrorMaker只是一个Kafka消费者和生产者,并使用一个队列连接起来而已。它从一个集群中消费消息,然后往另一个集群生产消息。

关于大数据开发学习,Kafka入门须知的几组核心概念,以上就为大家做了基本的介绍了。Kafka的学习,需要从基础概念开始,能够理解其含义,对于后续的运行机制和架构设计理解,也是有好处的。