3.API操作
3.1.API位置
3.2.手动管理offset
通过consumer.commitSync();方法。
4.kafka分区策略
4.1.四种分区策略
①指定分区
②根据key的hash值
③没有指定分区和key,则轮询。
④自定义分区
4.2.自定义分区
5.kafka与flume整合
https://flume.apache.org/FlumeUserGuide.html#kafka-sink
6.kafka如何保证数据不丢失
6.1.生产者producer
6.1.1同步模式
producer.type=sync request.required.acks=1 # 设置发送数据是否需要服务端的反馈,有三个值0,1,-1 # 0: producer不会等待broker发送ack # 1: 当leader接收到消息之后发送ack # -1: 当所有的follower都同步消息成功后发送ack.
6.1.2.异步模式
producer.type=async
request.required.acks=1
queue.buffering.max.ms=5000
queue.buffering.max.messages=10000
queue.enqueue.timeout.ms=-1
batch.num.messages=200
通过buffer来进行控制数据的发送,分别是时间阈值与消息的数量阈值,如果buffer满了数据还没有发送出去,如果设置的是立即清理模式,风险很大,一定要设置为阻塞模式。
结论:producer有丢数据的可能,但是可以通过配置保证消息的不丢失。
6.2. 消费者consumer
通过offset来记录每次消费到了哪一条数据,
低速的消费模式:offset记录在了本地磁盘文件
高速的消费模式:zookeeper的节点上
6.3.服务器broker:
数据分区,备份保证数据的不丢失。