🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### Kafka 数据处理流程 1. **生产者(Producer)发送消息**: * 生产者创建消息并将其发送到Kafka集群中的一个或多个主题。 * 生产者可以指定消息的键(key),Kafka会根据键进行分区选择,如果不指定键,则使用轮询(Round Robin)方式进行分区选择。 * 生产者通过配置`acks`参数来确定消息发送的确认级别:`acks=0`(不等待确认)、`acks=1`(等待Leader确认)、`acks=all`(等待所有ISR副本确认)。 2. **消息写入分区**: * 消息被写入指定主题的分区。每个分区都有一个Leader副本和多个Follower副本。 * Leader副本接收到消息后,会异步地将消息复制到Follower副本。 3. **消息存储在日志中**: * 每个分区在物理上对应一个日志文件(log file),消息以追加的方式写入日志文件。 * 每条消息都有一个唯一的偏移量(offset),偏移量在日志中是递增的,确保消息的顺序性。 4. **消费者(Consumer)读取消息**: * 消费者订阅一个或多个主题,并从相应的分区读取消息。 * 消费者通过维护每个分区的偏移量来追踪已处理的消息。Kafka会将消费者的偏移量存储在内部主题`__consumer_offsets`中。 5. **处理消息**: * 消费者处理读取到的消息,根据业务逻辑进行相应的操作。 * 消费者可以配置自动提交(auto commit)偏移量或手动提交偏移量,以确保消息处理的准确性。