Kafka 于 2011 年由 LinkedIn 公司开源,彼时,技术界已有成熟的消息系统,为什么还要开发一个新的呢?
定位
首先,Kafka 并不是传统意义上的消息系统(虽然它实现了消息系统的功能)。准确来说,它是实时数据处理系统,或者说,流处理系统。
特性
在设计之初,LinkedIn 公司就认为它必须包含下述特性:
- 它必须达到足够高的吞吐量,这样才能够支持大量的事件流,比如实时的日志聚合。
- 它必须能够优雅地支持大量堆积数据,这样才能够支持来自离线系统的定期数据载入。
- 它必须支持低延时的交付,这样才能够支持传统的消息系统的场景。
- 它必须支持分区、分布式和实时流处理(然后生成新的数据流)。
- 它必须支持容错,也就是说容忍其他机器的故障。
为了满足以上这五个要求,Kafka 才变成了现在的样子。它有很多其他消息系统没有的特性,比如分区机制、消费者(组)模型等。
实现上,Kafka 更像是一个数据库日志系统,而非传统的消息系统。
后语
接下来,我将分几个部分,详细介绍 Kafka 的设计,保持关注哦!
参考
本文使用 CC BY-SA 4.0 国际协议 进行许可,欢迎 遵照协议规定 转载。
作者:六开箱
链接:https://lkxed.github.io/posts/kafka-design-motivation/