kafka中的topic为什么要进行分区

发布网友 发布时间:2022-04-24 12:17

我来回答

3个回答

热心网友 时间:2023-10-12 14:22

若没有分区,一个topic对应的消息集在分布式集群服务组中,就会分布不均匀,即可能导致某台服务器A记录当前topic的消息集很多,若此topic的消息压力很大的情况下,服务器A就可能导致压力很大,吞吐也容易导致瓶颈。 有了分区后,假设一个topic可能分为10个分区,kafka内部会根据一定的算法把10分区尽可能均匀分布到不同的服务器上,比如:A服务器负责topic的分区1,B服务器负责topic的分区2,在此情况下,Procer发消息时若没指定发送到哪个分区的时候,kafka就会根据一定算法上个消息可能分区1,下个消息可能在分区2。当然高级API也能自己实现其分发算法。

热心网友 时间:2023-10-12 14:23

partitions的设计目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力

热心网友 时间:2023-10-12 14:24

kafka topic 分区的原因主要是为了并发访问,增大吞吐量。

具体来讲,每一个topic均被分成多个互不重复的partition,其中每个partition均被放在一个或多个broker服务器上,这样就提供了容错。如果数据在不同的patition上,那么他们的访问将可能由不同的broker服务器来完成,这样就实现了并发访问。分区的信息储存在Zookeeper上。

所以,分区是kafka用来提供并发访问控制的一个概念。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com