Kafka入门的一些基本概念
概述
Apache Kafka是一个发布/订阅消息传递系统。 它通常被描述为“分布式提交日志”或被描述为“分布式流式传输平台”。文件系统或数据库提交日志旨在提供所有事务的持久记录,以便可以一致地重放它们建立系统的状态。 类似地,Kafka中的数据按顺序持久存储,并且可以确定性地读取。 此外,数据可以在系统内分布式存储,以提供额外的故障保护,以及性能扩展的可能。
重要的概念
消息和批处理
Kafka中的数据单元称为消息(message)。如果你从数据库背景接近Kafka,您可以将其视为与行或记录类似。就Kafka而言,消息只是一个字节数组,因此其中包含的数据对Kafka没有特定的格式或含义。消息可以具有可选的元数据位,其被称为key。key也是一个字节数组,与消息一样,对Kafka没有特定含义。当消息以更受控制的方式写入分区时,使用key。最简单的方案是生成key的一致哈希,然后通过获取哈希模的结果(主题中的分区总数)来选择该消息的分区号。这可确保具有相同key的消息始终写入同一分区。
为了提高效率,将消息分批写入Kafka。批处理只是一组消息,所有消息都生成到同一主题和分区。每条消息通过网络进行单独的往返会导致过度的开销,并且将消息一起收集到一个批处理中会减少这种情况。当然,这是延迟和吞吐量之间的权衡:批次越大,每单位时间可以处理的消息越多,但单个消息传播所需的时间越长。批次通常也是压缩的