3. kafka怎么保证exactly one(数据准确唯一)
只有ack = -1的时候才能保证exactly one
4 kafka 怎样设计partition 的数量
具体要看数据的吞吐量来决定,单kafka分区每秒的数据吞吐量为10M/s,假如有20M数据产生,就需要设计2-3个partition,这样才能保证和产生的数据量保持一致、
5 kafka的幂等性一个和多次写入的结果是一样的
6 kafka牺牲性能来换取稳定性,把数据落地到磁盘当中,每一个topic中的partition中的数据都是有序的,生产者或者消费者通过数据的行偏移量来读取,全局无序,但是在分区内是有序的
7 kafka会数据的偏移量存到哪里?
数据的偏移量存储在zookeeper中特殊的topic中
8 怎么保证数据不丢失?
对于生产者 可以通过配置保证消息的不丢失,通过配置kafka的ack机制的ack = -1 这样就可以保证producer在分区内所有的副本都得到同步,才会收到响应。
对于消费者来说,在消息处理完成之前jiu提交offset,就有可能造成数据丢失,我们可以关闭自动提交offset,处理完消息后手动提交。
9 数据积压问题
数据积压主要是两方面的问题,一方面是下游的数据拉取的速度小于产生数据的速度,我们可以通过提高批次的拉取量和拉取时间,使拉取的速度大于产生数据的速度,
另一方面是,消费者消费数据不及时,我们可以通过增加topic中的分区数量同时提高消费组的消费者的数量,使分区的数量=消费者的数量。
10 数据重复问题
启动数据的幂等性,默认是关闭的,同时要求ack = -1 且副本的数量>1
11 如何保证数据的有序性?
kafka只能保证消费者在消费一个分区时是有序的。kafka全局无序但是区内有序。