主要内容:
1. kafka 整体结构
2. 消息的生产方式
3. 消息的读取方式
整体结构
在 kafka 中创建 topic
(主题),producer
(生产者)向 topic 写入消息,consumer
(消费者)从 topic 读取消息
kafka 是集群结构,每个主题会分成多个 partition
(部分),每个 partition 会被均匀的复制到不同服务器上,具体复制几份可以在配置中设定
每个 partition 有两个角色,leader
和 follower
leader
负责所有的读写请求
follower
负责容灾,当 leader 出现问题时,自动选出一个新的 leader
消息的生产
producer 向主题中写入数据,其实是向某个 partition 写入,具体向哪个 partition 写入,由生产者决定,例如最简单的方式就是轮流写
消息写入 partition 的方式是顺序追加,为每条消息设置一个序号 offset
消息的读取
consumer 是一个 consumer group
(消费者组)的概念
一个组中包含一个或者多个消费者,这一个组来订阅一个主题,不是单个的 consumer 直接订阅
当主题中产生新的消息时,这个消息会被发送到组中的某一个消费者上,如果一个组中有多个消费者,那么就可以起到负载均衡的作用
组中的消费者可以是一台机器上的不同进程,也可以是在不同服务器上
读取消息时,消费者自己维护读取位置,kafka不负责,消费者自己决定从哪个 offset
开始读取
消息被读取后,不会被删除,所以可以重复读取,kafka会根据配置中的过期时间来统一清理到期的消息数据
小结
Kafka 中包含多个 主题,每个 主题 被分成多个 部分,每个 部分 被均匀复制到集群中的不同服务器上,分为 leader 和 follower,leader 负责处理读写操作,由 follower 选举产生
生产者 向 主题 中的某个 部分 顺序追加消息记录
消费者 是一个组的概念,包含1个或多个,一起消费某个 主题,组中的不同 消费者 负责 主题 中的不同 部分,分担压力,提高读取消息的效率,并自己决定从哪儿开始读取