kafka生产,保存,消费消息过程要点个人总结
一、生产
1)producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该partition 的 leader
2)producer 将消息发送给该 leader
3)leader 将消息写入本地 log
4)followers 从 leader pull 消息,写入本地 log 后向 leader 发送 ACK
5)leader 收到所有 ISR 中的 replication 的ACK后,增加 HW(high watermark,最后commit 的offset)并向 producer 发送 ACK
二、保存
1)物理上把 topic 分成一个或多个 patition,计算得到相应的partition,保存到相应partition
2)保留数据是 Kafka 的一个基本特性, 但是 Kafka 不会一直保留数据,也不会等到所有消费者都读取了消息之后才删除消息。
相反,Kafka 管理员为每个主题配置了数据保留期限, 规定数据被删除之前可以保留多长时间, 或者清理数据之前可以保留的数据量大小。(时间&&大小)
3)注意:zookeeper保存的数据信息
三、消费
高级api和低级api
低级api需要指定partition以及offset(指定leader的partition)
对于每一个分区而言,只能被同一个消费者组中的其中一个消费者消费
注意:不管是生产者还是消费者,都要连接上leader的partition
总流程:首先每个broker有多个topic,每个topic有多个partition,partition有leader和follower之分,此外,partition还有offset。消费者和生产者都只能连接leader上的partition,数据是保存在kafka集群上的硬盘(顺序写的磁盘比随机写内存效率高),消费者可以属于同一个消费者组,同一个消费者组不能重复消费同一个partition。此外消费者可以指定partition和offset进行消费。补充kafka集群zookeeper的作用
- kafka客户端自带的脚本生产-消费消息
- Java API 生产和消费Kafka消息
- Kafka(三)Kafka的高可用与生产消费过程解析
- 从Message生产到消费的过程理解Handler消息机制
- java利用kafka生产消费消息
- Kafka消息生产消费的一个java小案例(伪分布)
- 我的mqtt协议和emqttd开源项目个人理解(12) - Hook使用和连接Kafka发送消息,使用ekaf库
- 分布式消息队列RocketMQ&Kafka -- 消息的“顺序消费”-- 一个看似简单的复杂问题
- 分布式消息队列RocketMQ&Kafka -- 消息的“顺序消费”-- 一个看似简单的复杂问题
- kafka之生产、消费关系
- kafka java 生产消费程序demo示例
- 【PMP认证考试之个人总结】第 2 章 组织和项目生命周期及管理过程
- WM_COPYDATA消息回顾和总结,以及如何解决WM_COPYDATA 发送CString消息的过程中,UNICODE字符不能被正确解析的错误
- kafka java 生产消费程序demo示例
- Kafka 个人总结
- Spring Cloud Stream如何消费自己生产的消息?
- Kafka要点总结及实践
- .net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结(二)
- mysql 存储过程个人总结
- 实验室框架个人总结过程