【Kafka】binlog kafka并行消费提升小窍门
线上库存Process实例配置详情:
背景:
1.业务是通过监听 上游mysql binlog完成的 2.binlog是通过 DDH kafka下发的 3.consumer消费 已经做到了 7ms的单条消息消费性能优化 4.怎样还能再提醒 消费方的消费速率呢? 5.当先consumer实例 蓝绿组共12个实例 2C2G (CPU2核,内存2G) 6.当前consumer 分区Partition 仅有6个
优化:
1.找DBA 调整binlog DDH生产策略,用shop+rf_id 或 shop+sku 做Hash分区数,尽可能保证 各分区生产消息均衡 2.consumer 线程数调整为 2(根据机器实际核心数2 做出调整 num.consumers) 3.binlog topic申请 分区数调整为24(蓝绿组共 12台机器,每个2核2G,consumer多线程调整为2, 则同时支持最多24个分区同时消费) (一个分区同时只能被一个线程消费,而不是一个实例) (一般设置线程数 要大于等于 分区数,这样可以保证所有分区在同一时间都可被消费,最好是线程数=分区数,匹配妥当,确保性能最佳且避免资源浪费) 4.consumer 单次可拉取消息大小 调整为max.partition.fetch.bytes=5M(默认1M, 单次取大,降低拉取消息次数,降低IO消耗)