原理阐述【我的 Kafka 旅程 - Producer】Producer生产者是数据的入口,它先将数据序列化后于内存的不同队列中,它用push模式再将内存中的数据发送到服务端的broker , 以追加的方式到各自分区中存储 。生产者端有两大线程 , 以先后的顺序,分别负责各自的任务处理,可并行或同步的方式,完成生产者端的所有处理过程 。
生产者端的两大线程
- 生产者线程:先将数据按规则放到内存当中
- Sender线程:再将内存中的数据发送到broker
内存当中有多个分区队列,生产者线程的分区工作原理/三大分区策略:
- 线程中的send方法指定分区号的,按指定分区存放
- 线程中的send方法无分区号的 , 有 key value 的,按key的hash值计算出一个固定区号存放
- 线程中的send方法只有value的,一个数据块填满后,随机按序平均存放到不同的分区
- 自定义类实现 Partitioner 接口
- 重写 Partition 方法(按收到的消息,指定到分区)
- 实现类配置到 Producer Properties 中
服务端broker分区中,有两种不同的角色 , leader 和 副本,leader负责接收数据 , 并把数据同步给各个副本以做备份,当Leader发送异常状况后,可启用副本继续运行 。后续章节再继续阐述broker分区的内容 。
当Sender线程将内存中的数据块发送给服务端的broker leader 时 , borker 对 Sender线程的应答机制:
- 0:broker leader接收的数据,不用等保存到磁盘就及时应答给Sender线程
- 1:leader保存磁盘后 , 不用等同步给副本,就应答给负责发送的Sender线程
- 2、leader和副本全部都磁盘保存完成后,再应答给负责发送的Sender线程
文章插图
上图需要关注的点:序列化的数据压缩方式、数据分区策略、内存总大小、内存数据块大小、数据块过期时间、broker应答机制 。
推荐阅读
- 我的 Kafka 旅程 - 文件存储机制
- 我的 Kafka 旅程 - broker
- Mobile 我的Vue之旅、05 导航栏、登录、注册
- Docker搭建kafka及监控
- 我的 Kafka 旅程 - Consumer
- 我的父亲作文600字初中作文 关于我的父亲写人作文600字
- 我的老父亲优秀学生作文5篇
- 我的父亲作文600字初中优秀作文 我的父亲初二优秀作文600字范文
- 我的父亲600字优秀作文初中 描写我的父亲初中600字作文
- 我的世界手机版紫珀台阶怎么获得