Apache Kafka 大型应用 20 项最佳实践 1 秒处理 1500 万条消息如何做到?

Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统。

例如,在 New Relic 的生产环境中,Kafka 群集每秒能够处理超过 1500 万条消息,而且其数据聚合率接近 1Tbps。

可见,Kafka 大幅简化了对于数据流的处理,因此它也获得了众多应用开发人员和数据管理专家的青睐。

然而,在大型系统中 Kafka 的应用会比较复杂。如果您的 Consumers 无法跟上数据流的话,各种消息往往在未被查看之前就已经消失掉了。

同时,它在自动化数据保留方面的限制,高流量的发布+订阅(publish-subscribe,pub/sub)模式等,可能都会影响到您系统的性能。

可以毫不夸张地说,如果那些存放着数据流的系统无法按需扩容、或稳定性不可靠的话,估计您经常会寝食难安。

为了减少上述复杂性,我在此分享 New Relic 公司为 Kafka 集群在应对高吞吐量方面的 20 项最佳实践。

我将从如下四个方面进行展开:

  • Partitions(分区)
  • Consumers(消费者)
  • Producers(生产者)
  • Brokers(代理)