Kafka是由Apache软件基金会开发的一个开源流处理平台,用Scala和Java编写,是一个高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。以下是关于Kafka的一些基本原理和概念的解释:
- 写入原理:
- Kafka的写入操作主要是将数据发送到指定的topic的partition中。
- 当生产者发送消息时,它会根据消息的key和partition的数量来决定将消息发送到哪个partition。如果没有指定key,那么Kafka会采用轮询的方式将数据发送到各个partition。
- Kafka的写入操作是异步的,生产者将消息发送到broker后,broker会立即返回一个ack(确认)消息给生产者,表示消息已经被接收。但是此时消息可能还没有被写入到磁盘中,只是被暂存在内存中。
- Kafka使用了一种叫做“日志段”(Log Segment)的数据结构来存储消息。每个partition都由多个日志段组成,每个日志段都包含了一定数量的消息。当新的消息到来时,Kafka会将其追加到最新的日志段的末尾。
- 为了保证数据的可靠性,Kafka还会将消息写入到磁盘中。这个过程是异步的,由后台线程负责完成。当消息被写入到磁盘后,对应的日志段就会被标记为“可刷盘”(flushable),表示该日志段的数据可以被持久化到磁盘上。
- 读原理:
- Kafka的读取操作主要是从指定的topic的partition中读取数据。
- 消费者会向Kafka broker发送fetch请求,指定要读取的topic、partition、offset等信息。
- broker会根据消费者的请求,从对应的partition中读取数据,并返回给消费者。
- Kafka支持多种读取模式,包括单线程读取、多线程读取、以及基于消费者组的读取等。消费者可以根据自己的需求选择合适的读取模式。
- 生产发送ack:

最低0.47元/天 解锁文章
1393

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



