公司应用kafka也有一段时间,或多或少都有些问题暴露出来。例如,一开始设计分区数的时候过于保守,导致后续client消费成瓶颈时没法通过增加一个消费者组的线程来增加消费速度了。

这个经验教会我一个道理:

使用一个新的平台也好,中间件也好。对于其性能和瓶颈应该有个前瞻性的规划,这个很重要。例如kafka在设计分区数的时候,应该仔细考虑当前消费者线程的消费能力。考虑未来数据规模增长后,消费者必然需要消费更多的数据从而保证不造成数据堆积。即消费者和生产者之间要保持平衡,不能让消费的比生产的慢,从而影响应用。这个前瞻性的规划应该是较为详细的,可控的。

数据规模的增长,消费者线程数的增加,都是应该在规划中的。等到出现瓶颈了,再慌乱的寻求解决方案,往往手忙脚乱,同时增加风险。

总之一句话: “一切问题和瓶颈的出现都在预期规划中” 肯定是好于 “走一步,看一步”