深入探索Kafka与Storm:消息处理与数据集成的综合指南
1. Kafka基础详解
Kafka集群通常由一个或多个Kafka服务器组成,这些服务器通过典型的TCP协议相互通信。生产者和消费者进程一般通过客户端与服务器进行通信,客户端可以用Java、Python等多种语言编写(Kafka客户端可在https://cwiki.apache.org/confluence/display/KAFKA/Clients 找到)。
Kafka主题可类比为命名的信箱,Kafka生产者将消息投递其中。一个Kafka集群可以有多个主题,每个主题又进一步划分为分区,并按时间顺序排列。主题可看作是实际存储物理文件的分区的逻辑集合。
一个Kafka代理可以持有多个分区,每个分区严格按顺序存储多条消息。消息按时间顺序排列(第0条消息是最早的),这是Kafka消息代理系统的一大优势。一个或多个生产者可以向一个分区写入消息,消费者则订阅这些分区以获取消息。所有消息都由唯一的偏移量ID区分(分区内每条消息的唯一标识符,且唯一性仅在分区内保持)。
每条发布的消息会在配置的生存时间(TTL)内保留,无论该消息是否被消费者消费或仍保留在分区中。Kafka的另一个重要属性是主题。简单来说,Kafka会持续将消息写入提交日志,每个分区都有自己不可变的提交日志,每条消息都标有一个序列ID。
Kafka消费者的一个关键优势在于设置和维护消费者上下文的负载极小。每个消费者只需维护偏移量,消费者元数据由服务器维护,消费者负责记住偏移量。由于Kafka将所有消息以提交日志的形式存储在分区中,日志本质上是按时间顺序排列的,消费者有权维护、管理和推进偏移量,因此可以按自己的方式读取和处理消息,
超级会员免费看
订阅专栏 解锁全文
1152

被折叠的 条评论
为什么被折叠?



