Kafka数据一致性可靠性等相关问题

Kafka相关总结

Kafka是一个分布式消息发布订阅系统,Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。

Kafka与传统消息系统对比有以下不同

  • 分布式系统,易于向外拓展
  • 同时为发布和订阅提供高吞吐量
  • 支持多订阅者,当失败时能够自动平衡消费者
  • 将消息持久化到磁盘
Topic

Topic信息被存储在不同分区中,其中每一个分区内部的消息都是有序的且同时只能够被一个消费者组中的一个消费者消费。一个消费者可以对应一到多个分区,若消费者比分区多则必然会有消费者闲置。
每一个分区中的消息都被分配了一个序列号(offset)也就是偏移量,偏移量由消费者控制,消费者可以将偏移量重置为更老的一个偏移量,重新读取消息,消费者基于偏移量消费Topic中的消息,kafka默认存储消息的时间为7天。
Topic分区存储能够加大Kafka的吞吐量。
我们数据存在不同的partition上,那kafka就把这些partition做备份。比如,现在我们有三个partition,分别存在三台broker上。每个partition都会备份,这些备份散落在不同的broker上。

顺序性

因为Topic分区中消息只能由消费者组中的唯一一个消费者处理,所以消息肯定是按照先后顺序进行处理的。但是它也仅仅是保证Topic的一个分区顺序处理,不能保证跨分区的消息先后处理顺序。
所以,如果你想要顺序的处理Topic的所有消息,那就只提供一个分区。
生产者在往Topic的partition存储中先写入缓存,等一定时间或者一定数据量之后才批量的写入到磁盘中。
消费者在读取partition中的数据时,通过zerocopy方式直接读取内核层中的数据,避免了一层拷贝,提高了效率。

offset

在以前版本的Kafka,这个offset是由Zookeeper来管理的,后来Kafka开发者认为Zookeeper不合适大量的删改操作,于是把offset在broker以内部topic(__consumer_offsets)的方式来保存起来。
但是在SparkStreaming与Kafka的使用中 偏移量还是自己存储的由spark自己存储 存储在checkpoint中但是会影响到Kafka监控工具的使用,因此手动更新偏移量到zookepper中。

ack确认机制 确保数据可靠性

Kafka的ack确认机制分为三种,分别为0,1,-1(all&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值