问:
1.写入HBASE成功,但是offset提交失败:重复消费
2.写入hbase失败,但是offset提交成功:数据丢失
kafka当中如何保证exactly once机制
3.写入HBASE成功,提交offset成功:正常消费情况
4.写入HBASE失败,提交offset失败:重新进行消费
如果保证
kafka的数据消费模型:
exactly once:消费且仅消费一次
at least once:最少消费一次,可能出现数据重复消费的问题
at most once:至多消费一次,可能出现数据丢失的问题
数据重复消费或者数据丢失的原因造成:offset没有管理好
将offset的值保存到rerdis里面去或者HBASE里面去
默认的offset保存位置:
可以保存到zk里面去,
key保存到kafka自带的一个topic里面去,_consumer_offsets
数据消费:
高阶API,high level API 将offset的值,保存到zk当中,早期kafka版本默认使用high level api进行消费
低阶API,将offset的值保存到kafka的默认topic里面,新的版本都是使用low level API进行消费,将数据的offset保存到一个topic里面去
kafka-stream API开发:kafka新版本的一个流式计算的模块,主要用于流式计算,实时计算
使用kafka-stream API