首页 > 其他分享 >kafka

kafka

时间:2023-05-25 19:34:41浏览次数:36  
标签:逻辑 可以 partition broker kafka topic Consumer

broker一般指服务器资源
概念理解 topic: 逻辑概念,用于联系Producer 和 Consumer的message生产和消费。Producer 生产的消息放入一个topic中,由Consumer通过对同一个topic的订阅进行消费   broker: 物理资源,一般一个broker指底层的一台物理服务器。   partition: 逻辑分区存储,用于将topic在不同的物理资源上进行逻辑存储。实际Producer 放入topic的消息,会存入不同broker上的partition中。其特点如下:   一个topic默认只有一个partition,但是可以手动扩充partition数量。因此partition可以理解为最细I粒度的topic。 由于一个topic可以包含很多个partition,在单个partion中,存储的信息是有序的,但是同一个topic中、不同partition中消息是无序的 举例理解 关于topic、partition、broker的概念理解,可以类比windows的逻辑分区。   一个broker对应于一台PC,一个partition对应于PC上的一个逻辑分区,如D、E、F盘,一个topic最少对应于一个partition,换而言之,producer写入的信息,至少要放入一个逻辑分区(D盘),也可以分别放入多个逻辑分区(D盘和E盘)。从单个逻辑分区(D盘)取出的数据是有序的,但是从多个逻辑分区(D盘和E盘)取出的数据,不保证有序。   三者存在的意义 定义topic、partition、broker三者的意义,本质目的在于将message的生产消费、逻辑存储、物理资源做解耦,使得topic的横向扩展与broker完全解耦   topic负责message的生产消费 partition在于做topic的逻辑存储 broker实际是提供partition的物理资源 两两配合关系 要理解以上三个概念,就要充分理解topic、partition、broker三者间的两两关系   broker与partition 一个broker可以有多个partition吗?   可以,类似于一台PC可以划分多个逻辑分区   一个partition可以跨broker存在吗?   不可以,一个partition的分区上限,就是broker的大小。前面提到过,要实现消息有序,就必须使用同一个partition存储message,因此kakfa中的有序message,是存在上限的,即单个broker的性能上限。   broker与topic(通过partition隔离后,完全解耦) 一个broker可以有多个topic吗?   可以,一个broker上可以有多个partition,不同的partition可能隶属于不同的topic   一个topic可以跨broker存在吗?   可以,一个topic可以囊括不同partition,不受broker限制,可以是一台broker上的多个partition,也可以是多个broker上的不同partition。   topic与partition 一个topic可以包含多个partition吗?   可以,基本概念   一个partition可以隶属于多个topic吗?   不可以,一个partition只能隶属于一个topic,作为这个topic的最细粒度逻辑存储   其他概念 Consumer Consumer是message的消费者,这个不用多介绍,唯一要注意的是Consumer与partition的关系。   每个topic的每个partition只能由唯一一个Consumer消费。   原因是partition已经是topic的最小存储粒度,所以consumer相当于消费的是一个最小topic   一个Consumer可以消费多个partition   这个就相当于consumer直接订阅topic一样   Consumer group Consumer group顾名思义就是一堆Consumer ,其存在的意义依然是为了解耦,解耦topic订阅与consumer消费之间的关系。   点对点模型可以直接对接单一的Consumer 进行消费 发布订阅模型则可以通过Consumer group的形式进行消费 虽然Consumer group对应topic,解耦了topic订阅与consumer消费之间的关系,但还是要关注最细粒度consumer的和最小粒度的topic(partition)之间的关系,从前面Consumer一节中,可以看出主要是二者的数量对应关系。主要讨论三种情况   Consumer Group中Consumer 数量 < 所订阅topic 中partition数量,可以正常消费,但是使用较少。(此时一个Consumer 会按不确定比例(竞争策略)消费多个partition,但很少这么用。具体原理可以参考这篇文章) Consumer Group中Consumer 数量 = 所订阅topic 中partition数量, 可以正常消费,可以做到每个partition一个Consumer ,但是没有资源冗余,不具备高可用,使用也较少 Consumer Group中Consumer 数量 > 所订阅topic 中partition数量, 可以正常消费,且留有资源冗余,冗余资源正常不会工作,只有在Consumer 故障时才会启用。正常实际生产环境中使用较多。  

 

标签:逻辑,可以,partition,broker,kafka,topic,Consumer
From: https://www.cnblogs.com/zqlmianshi/p/17432646.html

相关文章