
本篇文章是介绍kafka的第一篇,介绍kafka一些入门内容,后面还会持续更新关于kafka的内容。
kafka是一个分布式数据流平台,使应用程序能够实时发布、订阅、存储和处理消息流。发布/订阅 (pub/sub) 系统的特点是发送方将消息推送到一个中心点进行分类。
Kafka的核心组件,有Producer(生产者)、Broker(消息中间件)、Consumer(消费者)、Topic(主题)、Partition(分区)、Zookeeper(协调服务)等。在 Kafka 4.0 版本中,Kafka 彻底移除了 Zookeeper,并采用 KRaft(Kafka Raft) 作为新的元数据管理和集群协调机制
消息或记录是包含应用程序数据的键/值对。每条消息都存储在一个topic中。此消息在其配置的生命周期内是持久的。主题中每条消息的位置是其偏移量 。消息通常按照添加顺序从每个分区中使用。
同一类消息的集合,topic通常在1个或者多个的broker跨区复制实现容错,每个topic上有不同的分区。

分区是包含写入消息的topic的子集。新消息会进入到分区末尾,可以确保消息的有序性,多个分区可以在负载较高,数据共享复制的情况下提高性能。
另外分区可以在不同的broker之间进行复制,其中一个broker作为leader,用于消息的接收及消费,当该broker异常时,其中一个副本重新选举为leader。

创建者将消息发布到主题,该主题将每条消息附加到分区的末尾。默认情况下,如果消息包含键,则使用键的哈希值来决定哪个分区接收消息。如果 key 为 null,则循环算法将平衡所有分区之间的消息存储。
Kafka 保证,只要不添加新的分区,当使用默认分区器时,具有相同键的元素就会存储在同一个分区中。
发布到主题的每条消息都会传送给已订阅该主题的使用者。使用者可以从 topic 分区中的任何偏移量读取数据。在大多数情况下,使用者会线性推进其偏移量,但它可以从任何偏移量开始,并以任何顺序读取消息。使用者通常会将其偏移量“提交”回Kafka集群,以便使用者可以从中断的地方继续,例如,在重新启动时。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。