1.什么是Kafka?

  • Kafka作为消息系统,是基于发布-订阅模型的消息系统;
  • Kafka 作为存储系统,能够存储和持续处理大型数据流;

  • Kafka用做流处理,实时数据流平台;

2.总体架构

Kafka基本原理(二)Kafka简述

3.基本概念

3.1生产者Producer

生产者可以将数据发布到所选择的topic(主题)中。生产者负责将记录分配到topic的哪一个 partition(分区)中。可以使用循环的方式来简单地实现负载均衡,也可以根据某些语义分区函数(例如:记录中的key)来完成。

3.2消费者Consumer

消费者使用一个 消费组 名称来进行标识,发布到topic中的每条记录被分配给订阅消费组中的一个消费者实例.消费者实例可以分布在多个进程中或者多个机器上。

3.3消费者组 ConsumerGroup

如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例.

如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程.

Kafka基本原理(二)Kafka简述

如图,这个 Kafka 集群有两台 server 的,四个分区(p0-p3)和两个消费者组。消费组A有两个消费者,消费组B有四个消费者。 

3.3Broker

KafKa集群就是由一个或者多个KafKa实例构成,每一个KafKa实例称为代理(Broker),通常也称代理为KafKa服务器(KafKaServer)

3.4主题  Topic

Topic 就是数据主题,是数据记录发布的地方,可以用来区分业务系统。Kafka中的Topics总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。

对于每一个topic, Kafka集群都会维持一个分区日志,如下所示:

Kafka基本原理(二)Kafka简述

3.5分区和副本(Partition&Replica)

KafKa将一组消息归纳为一个主题,而每个主题又被分为一个或者多个分区(Partition)。每个分区有一系列有序、不可变的消息组成,是一个有序队列;

每个分区在物理上对应一个文件夹,分区命令规则:主题名称—分区编号

分区编号从0开始。每个分区又有一至多个副本(Replica),分区的副本分布在集群的不同代理上,以提高可用性。

注意:

1.KafKa只能保证一个分区之内的消息的有序性,并不能保证跨分区消息的有序性。每条消息被追加到相应的分区中,是顺序写磁盘,效率非常高,这是KafKa高吞吐率的一个重要保证。

2.理论上,分区个数越多则吞吐量越高,但是这需要根据实际的环境和业务场景来决定。

3.kafka分区数存在着默认的上限值10000,超过此值会报错:“Too many  open files”

4.参考

kafka:与zookeeper的联系是什么?

kafka 概览

相关文章: