3

Apache Kafka 12个最佳实践

 5 months ago
source link: https://www.jdon.com/63497.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Apache Kafka 12个最佳实践

Apache Kafka,也被称为Kafka,是一个企业级的消息传递和流媒体代理系统。Kafka是一项伟大的技术,可用于架构和建立实时数据管道和流媒体应用程序。
我强烈建议架构师们熟悉Kafka生态系统,特别是Kafka集群、代理、主题、分区、消费者、生产者和偏移的概念。

本文将强调我在使用Kafka时学到的12条重要经验:

  • 为了实现消息的并行处理,在一个主题中创建多个分区。这使得多个消费者能够平行地处理消息。在一个消费者组中,每个分区只能被一个消费者消费。因此,如果一个消费者组中有多个消费者,他们可以消费不同分区的消息。因此,如果我们想使消息的消费并行化,就在一个主题中创建多个分区。
  • 每条消息都会传给订阅了某个主题/分区的每个消费者组,但在一个组内,它只传给一个消费者。因此,所有订阅了主题的消费者组都会得到消息,但在一个消费者组内只有一个消费者会得到一个分区的消息。因此,如果你想把消息广播给多个消费者,请给他们分配不同的消费者组。
  • Kafka中消息大小的默认设置是1MB。消息在被传递到Kafka之前可以被压缩。为了在一个主题中存储更多的数据,我们可以在多个服务器上创建多个分区
  • 确保需要发布或消费的消息是可序列化的。要特别注意日期时间和嵌套结构。
  • 使用函数 seek(TopicPartition, long) 来指定新的位置。
  • 如果我们在设计一个应用程序时,消息的顺序很重要,我们希望消息的顺序得到保证,那么在所有的消息中使用相同的Partition Id。原因是,排序保证适用于分区级别。因此,如果你在一个主题中有多个分区,你需要确保你被要求出现的消息有相同的分区ID。所有被推送到一个主题的分区中的消息,如果它们有相同的分区ID,就会被正确排序。
  • 如果我们想在所有的主题中进行全局排序,请使用单个分区的主题。
  • 保持你的日志可管理,并定期监测磁盘空间。
  • 为了设计一个持久的系统,确保在Kafka设置中设置一个高复制系数。Kafka会在多个服务器上复制每个主题的分区的日志。当一个服务器发生故障时,这允许自动故障切换到这些副本,因为在故障的情况下,消息仍然可用。我们可以在每个主题的基础上设置复制因子。另外,我们可以将生产者的批次大小设置为1。这将确保每条消息都保存在磁盘上,而且消息不会被分批刷新。这将影响性能。对于持久和高可用的系统,有高主题复制是很重要的。通常情况下,为了实现可靠的故障转移,建议至少有3个broker服务器。
  • 如果我们想删除旧的消息,可以使用压缩的主题,当新的事件发布到主题时,一个键的旧事件就会被删除。
  • 为了保证Kafka的安全,可以使用TLS客户端证书,对消息进行加密,并添加用户权限
  • 我们还可以使用Java DSL或Kafka的类似SQL的流语言来创建和处理存储在Kafka中的数据流。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK