✈️【Kafka实战指南】kafka分区数设置多少合适

条件概要

kafka的每个topic都能够创立多个partition,partition的数量无上限,并不会像replica相同受限于broker的数量,因而partition的数量能够随心所欲的设置。那确认partition的数量就需求考虑一些权衡要素

越多的partition能够供应更高的吞吐量

  • 单个partit索引是什么意思ion是kafka并行操作的最小单元」。每个partition能够独立接纳推送的音讯以及被线程池的七个参数consumer消费,相当于topic的一个子通道,partition和topic的联络就像高速公路的车道和高速公路的联络相同,起始点和终点相同,每个车道都能够独立结束运送,不同的是kafka中不存在车辆索引有哪几种类型变道的说法,进口时挑选的车道需求从一线程池创立的四种而终。

  • kafka的吞吐量清楚明晰,在资源满足的状况下,partition越多速度越快。

  • 这儿提到的资源足够解释一下,假定我现在一个partition的最大传输速度为p,现在kafka集群共有三个broker,每个broker的资源满足支撑三个partition最大速度传输,那我的集群最大传输速度为33p=虚拟机下载手机版9虚拟机装置教程win10p

假定在不添加资源的状况下将partition增虚拟机对电脑损伤大吗加到18个,每个partition只能以p/2的速度传输数据,因而传输速度上限仍是9p,并不能再进步,因而吞吐量的规划需求考虑broker的资源上限

kafka跟其他集群相同,能够横向扩展,再添加三个相线程优化开不开同资源的broker,那传输速度即可达到18p

越多的分区需求翻虚拟机开更多的文件句柄

在kafka的broker中,每个分区都会对照着文件系统的一个目录。

在kafka的数据日志文件目录中,每个日志数据段都会分配两个文件,一个索引文件和一个数据文件。因而线程池,跟着partition的增多,需求的文件句柄数急剧添加,必要时需求调整操作系统允许翻开的文件句柄数

更多的分区会导致端对端的推迟

  • kafka端对端的推迟为producer端发布音讯到consumer端消费音讯所需的时刻,即consumer接纳音讯的时刻减去produce发布音讯的时刻。

  • kafka在音讯正确接纳后才会暴露给顾客,即在保证in-sync副本复制成功之后才会暴露,瓶颈则来自于此。

  • leader broker上的副本从其他broker的leader上复制数据的时分只会翻开一个线程,假定partition数索引超出了数组界限什么意思量为n线程池,每个副本同步的时刻为1ms,那in-sync操作结束所需的时刻线程优化开不开即n * 1ms,若n为1线程池面试题0000,则需求10秒才索引干返回同步状况,数据才干暴露给顾客,这就导致了较大的端对端的虚拟机是什么意思推迟。

越多的partition意味着需求更多的内存

  • 在新版本的kafka中能够支撑批量提交和批量消费,而设置了批量提交和批量消费后,每个partit虚拟机是什么意思ion都会需求必定的内存空间。
    • 假定为100k,当partition为100时,pro虚拟机装置教程ducer端和c线程池面试题onsumer端都需求10M的内存;当partition为100000时,producer端和consumer端则都需求10G内存。
    • 无限的partition数量很快就会占有很多的内存,构成功用瓶颈。

越多的索引符号partition会导致更长索引图时刻的索引页是哪一页恢复期

  • 「kafka通过多副本复制技能,结束kafka的高可用性和稳定性」。每个partition都会有多个副本存在于多个broker中,其间一个副本为leade线程撕裂者r,其他的为follower。

  • 「kafka集群其间一个broker呈现缺点时,在这个broker上的leader会需求在其他broker上从头挑选一个副本建议为lea索引的效果及优缺点der」,这个进程由kafka controller来结束,主要是从Zookeeper读取和修正受影响partition线程安全的一些元索引图数据信息

  • 一般状况下,当一个broker有计划的停机,该broker上的partition索引的效果及优缺点 leader会索引在broker停机前有次第的逐一移走,假定移走一个需求1ms,10个partition leader则需求10ms,这影响很小,并且在移动其间一个leader的时分,其他九个leader是可用的。因而实际上每个partition leader的不可用时刻为索引符号表示的意义1ms。但虚拟机装置教程win10是在宕机状况下,一切的10个partition

  • leader一起无法运用,需求顺次线程池面试题移走,最长的leader则需求10m线程优化开不开s的不可用时刻窗口,均匀不可用时刻窗口为5.5ms,假定有10000个leader在此宕机索引的b索引有哪几种类型roker上,均匀的不可用时刻窗口则为5.5s。

  • 更极点的状况是,当虚拟机下载手机版时的broker是kafka controller地址的节点,那需求等候新的kafka leader节点在投票中发生并启用,之后新建议的kafka le线程池ader还需求从zookeeper中读取每一个partition的元数据信息用于初始化数据。在这之前partit索引页是哪一页ion leader的搬迁一向处于等候状况。

总结

一般状况下,越多的partition会带来越索引页是哪一页高的吞吐量,但是一起也会给broker线程撕裂者节点带来相应的功用损耗和潜在风险,尽管这些影响很小,但不可疏忽,因而需求根据本身broker节点的实际状况来设置partition的数量以及replica的数量。

例如我的集群安置在虚拟机里,12核cpu,就能够在kafka/config/sever.properties配置文件中,设置默许分区12,往后每次创立topic都是12个分区。

✈️【Kafka实战指南】kafka分区数设置多少合适

发表评论

提供最优质的资源集合

立即查看 了解详情