Kafka的一些问题

·Kafka是如何保证消息不丢失:1、生产者发送消息的时候,可以使用异步回调发送2、在broker中消息有可能会丢失,可以通过kafka的复制机制来确保消息不丢失,在生产者发送消息的时候,设置一个acks确认机制。设置参数为all,当生产者发送消息到分区之后,在leader分区和follwer分区都会保存确认,只有当所有的副本都保存确认以后才算是成功发送了消息。3、有可能是在消费者端丢失消息,kafka消费消息都是按照offset进行标记消费的,消费者默认是自动按期提交已经消费的偏移量,默认是每隔5s提交一次,如果出现重平衡的情况,可能会重复消费或丢失数据。我们会禁用掉自动提价偏移量,改为手动提交,当消费成功以后再报告给broker消费的位置,这样就可以避免消息丢失和重复消费了

·Kafka中消息的重复消费问题如何解决的:1、kafka消费消息都是按照offset进行标记消费的,消费者默认是自动按期提交已经消费的偏移量,默认是每隔5s提交一次,如果出现重平衡的情况,可能会重复消费或丢失数据。我们会禁用掉自动提价偏移量,改为手动提交,当消费成功以后再报告给broker消费的位置,这样可以避免消息丢失和重复消费。2、为了消息的幂等,我们也可以设置唯一主键来进行区分,或者是加锁,数据库的锁,或者是redis分布式锁,都能解决幂等的问题

·Kafka是如何保证消费的顺序性:kafka默认存储和消费消息,是不能保证顺序性的,因为一个topic数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储的偏移量,如果消费者关联了多个分区不能保证顺序性。把消息都存储同一个分区下就行了,有两种方式都可以进行设置,1、是发送消息时指定分区号,2、发送消息时按照相同的业务设置相同的key,因为默认情况下分区也是通过key的hashcode值来选择分区的,hash值如果一样的话,分区肯定也是一样

·Kafka的高可用机制有了解过嘛:第一个是集群,第二个是提供了复制机制kafka集群指的是由多个broker实例组成,即使某一台宕机,也不耽误其他broker继续对外提供服务复制机制是可以保证kafka的高可用的,一个topic有多个分区,每个分区有多个副本,有一个leader,其余的是follower,副本存储在不同的broker中;所有的分区副本的内容是都是相同的,如果leader发生故障时,会自动将其中一个follower提升为leader,保证了系统的容错性、高可用性

·复制机制中的ISR:ISR的意思是in-sync replica,就是需要同步复制保存的follower其中分区副本有很多的follower,分为了两类,一个是ISR,与leader副本同步保存数据,另外一个普通的副本,是异步同步数据,当leader挂掉之后,会优先从ISR副本列表中选取一个作为leader,因为ISR是同步保存数据,数据更加的完整,所以优先选择ISR副本列表

·Kafka数据清理机制了解过嘛:Kafka中topic的数据存储在分区上,分区如果文件过大会分段存储segment每个分段都在磁盘上以索引(xxxx.index)和日志文件(xxxx.log)的形式存储,这样分段的好处是,第一能够减少单个文件内容的大小,查找数据方便,第二方便kafka进行日志清理。在kafka中提供了两个日志的清理策略:1、根据消息的保留时间,当消息保存的时间超过了指定的时间,就会触发清理,默认是168小时( 7天)2、根据topic存储的数据大小,当topic所占的日志文件大小大于一定的阈值,则开始删除最久的消息。这个默认是关闭的。这两个策略都可以通过kafka的broker中的配置文件进行设置

·Kafka中实现高性能的设计有了解过嘛:Kafka 高性能,是多方面协同的结果,包括宏观架构、分布式存储、ISR 数据同步、以及高效的利用磁盘、操作系统特性等。主要体现有这么几点:1、消息分区:不受单台服务器的限制,可以不受限的处理更多的数据。2、顺序读写:磁盘顺序读写,提升读写效率3、页缓存:把磁盘中的数据缓存到内存中,把对磁盘的访问变为对内存的访问4、零拷贝:减少上下文切换及数据拷贝。5、消息压缩:减少磁盘IO和网络IO。6、分批发送:将消息打包批量发送,减少网络开销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值