1.概述
我们有个需求是判断kafka分区是否进行了数据倾斜操作,如果数据倾斜了,要告警,然后我就需要写一个故意让数据倾斜的工具。
2.写入指定分区
Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面。
每一条消息被发送到broker时,会根据paritition规则选择被存储到哪一个partition。如果partition规则设置的合理,所有消息可以均匀分布到不同的partition里,这样就实现了水平扩展。(如果一个topic对应一个文件,那这个文件所在的机器I/O将会成为这个topic的性能瓶颈,而partition解决了这个问题)。在创建topic时可以在$KAFKA_HOME/config/server.properties
中指定这个partition的数量(如下所示),当然也可以在topic创建之后去修改parition数量。
在发送一条消息时,可以指定这条消息的key,producer根据这个key和partition机制来