kafka中的一些主要概念介绍

      Kafka是一个基于发布/订阅的分布式消息系统,主要用于大数据领域,当然除了作为一个消息队列功能之外,也可以用于日志收集,追踪监控、流处理(轻量级的场景)等需求操作,下面用图表与文字的方式大概介绍一下kafka作为消息队列的一些基本概念知识。

 

一、生产者,Broker,消费者

kafka中的一些主要概念介绍

1, Producer消息生产者向broker中发送消息。

2,Broke(一个单独的kafka server / 服务节点)接收信息后,分配offser,数据持久化在磁盘上,并且接收其他消费者、broker的请求,多个broker组成一个cluster集群对外服务;

每个cluster选举其中一个broker作为controller leader(一主多从)管理分区、副本、数据等变化状态。

3,Consumer消费者向broker获取信息,多个consumer组成一个Consumer group,

保证其订阅的Topic中每一个分区只被分配给此Group中的一个消费者处理。

 

二、Topic、Partition分区

kafka中的一些主要概念介绍

1,Topic用于存储消息,可理解为一个消息的集合,topic存储在broker中,一个topic可以有多个partition分区(至少一个分区),一个topic可以有多个生产者向其push消息,一个topic可以有多个消费者向其pull消息,一个topic可以存在于一个或者多个broken中,注意避免一个topic中的分区数量大于集群中的bocker数量以防止集群数据不均衡。

2,Partition是topic的子集,不同分区分配在不同的broker上进行水平扩展从而增加kafka并行处理能力,同topic下的不同分区信息是不同的,同一分区信息是有序的;

每个分区有一个或者多个副本,选举一个leader,副本从leader中拉取数据更新自己的log中(每个分区逻辑上对应一个log文件夹),消费者向leader中pull信息;

整个副本的集合的子集又叫ISR集合,当副本与leader的消息差值低于指定阈值时,副本集合则为ISR集合。