我们设计的 Kafka 能够作为一个统一的平台来处理大公司可能拥有的所有实时数据馈送。 要做到这点,我们必须考虑相当广泛的用例。
Kafka 必须具有高吞吐量来支持高容量事件流,例如实时日志聚合。
Kafka 需要能够正常处理大量的数据积压,以便能够支持来自离线系统的周期性数据加载。
这也意味着系统必须处理低延迟分发,来处理更传统的消息传递用例。
我们希望支持对这些馈送进行分区,分布式,以及实时处理来创建新的分发馈送等特性。由此产生了我们的分区模式和消费者模式。
最后,在数据流被推送到其他数据系统进行服务的情况下,我们要求系统在出现机器故障时必须能够保证容错。
为支持这些使用场景导致我们设计了一些独特的元素,使得 Kafka 相比传统的消息系统更像是数据库日志。我们将在后面的章节中概述设计中的部分要素。