Kafka-Delivery Guarantee
来源:互联网 发布:c多核编程 编辑:程序博客网 时间:2024/05/17 21:53
每种消息系统都会提供一些机制来保证消息传输的可靠性,Kafka也是如此。
Kafka提供了一下集中Delivery Guarantee:
- at most once
- at least once
- exactly once
Producer的delivery gurantee
Kafka提供了replication机制,只有一条消息被broker接收到,那么该条消息就一定可用,主要的问题在于,当producer和broker的通信网络发生故障时,需要有一种机制来保证不丢失数据。Kafka的Producer此时会retry失败的数据,这样就可以保证在producer端的exactly once
Consumer的delivery gurantee
首先,来梳理一下Consumer消费数据的主要流程。
Consumer从Broker读取一条数据后,可以执行commit,然后会在zookeeper中保存当前consumer在分区上消费数据的offset,下一次消费数据时,会从上一次commit的offset位置开始读取。如果上一次没有commit,那么就会从上一次消费数据的起始位置开始消费数据,也可以选择默认提交,即consumer读取到一条数据后马上commit。但实际情况并非这么简单,这种复杂性就发生在读取数据和commit之间。
- 读取数据后马上执行commit。
consumer读取数据后需要对数据进行处理,如果在处理过程中程序出现异常或宕机,当重新读取数据时当前数据就会丢失。 - 待处理完成后在执行commit。
若在执行commit前出现故障,当再次读取数据时,将会读取上次处理完成但未提交的数据。
上面的问题也是经典的事务性问题。如果想更好的解决这个问题,那么一个有效的办法是在offset上加入读取和提交两个节点的标记,这样就能清晰的标明一条数据的读取状态和提交状态。
0 0
- Kafka-Delivery Guarantee
- Kafka 消息 Deliver guarantee
- 计算广告与数据[三]展示广告之Guarantee Delivery
- Kafka delivery保证(kafka消息投递保证)
- Kafka消息delivery可靠性保证(Message Delivery Semantics)
- 计算广告与数据[五]展示广告之Non-Guarantee Delivery
- Delivery
- Recent Evolution of Zero Data Loss Guarantee in Spark Streaming With Kafka
- Recent Evolution of Zero Data Loss Guarantee in Spark Streaming With Kafka
- undo_retention&guarantee
- undo_retention&guarantee
- undo_retention&guarantee
- timus 1211. Collective guarantee
- Delivery Completed
- Continuous Delivery
- Delivery SQL
- Content Delivery
- RETENTION GUARANTEE 参数的作用
- mysql缺少根元素怎么解决?
- github视频教程-03 如何使用github上pull-request功能(VS2013)
- python基础2--------元组,列表,字符串
- js函数声明语句与函数表达式的区别深入理解
- C语言进行二叉树的递归遍历和非递归遍历
- Kafka-Delivery Guarantee
- Java 泛型
- 19. Remove Nth Node From End of List
- JavaScript控制文本框
- 关于iOS推送原理
- 百度网盘分享——电子专业学习视频教程
- 《学习笔记》之HTML--LocalStorage
- “IE浏览器不能上网,其它浏览器可以”的解决方法
- java中的常用IO流