「攻城狮Bilbo」Kafka为什么会这么快( 二 )


上面从读写两个角度分析了为什么kafka吞吐量高 , 其实还有一个重要的原因 。 批量数据压缩
kafka不会对每个消息都做压缩 , 而是对一批消息压缩 , 然后将数据统一发送 。 将所有的消息变为一个批量文件 , 然后直接丢给消费者 。
综上所述 , kafka通过MMFile技术快速将数据顺序写入磁盘 , 在读取时通过零拷贝技术快速读取 , 然后通过批量数据压缩将数据传输到消费者 。 这就是kafka快的秘诀 。 然而鱼与熊掌不可兼得 , 速度和可靠性不可能同时满足 , 需要根据实际业务情况在二者之间作出取舍 。 例如当用kafka做日志聚合和网站用户行为分析时速度要比可靠性重要 , 而在某些消息不允许丢失的场景 , 可靠性可能是首选 。