消息队列kafka的面试问题汇总
1.为什么要使用消息队列MQ?
kafka的作用:解耦,异步,削峰(解决高峰期瘫痪)
2.架构中引入MQ之后可能存在的问题?
系统的可用性降低了,因为一旦MQ遇到故障,整个系统就歇菜了
系统的复杂性变高,因为多加了一个环节
一致性问题
3.消息队列的比较
activeMQ:吞吐量万级,但社区维护慢
RabbitMQ:吞吐量万级,社区好性能可以,有后台管理界面,但是erlang语言开发,源码不好解读(中小型公司推荐)
RocketMQ:10万级吞吐量,阿里开源,分布式扩展方便,java源码(大型公司推荐)
kafka:单机10万级吞吐量,大数据实时计算,日志采集,功能简单,易于扩展(大数据领域)
4.消息队列怎么保证高可用?
(非分布式)RabbitMQ:镜像集群模式,每个节点上都有一个完整的queue的数据
kafka:leader和follower
5.为什么在消息队列里面消费到了重复的数据?
kafka:消费者在消费完数据,正要向zk提交offset的时候,消费者进程挂了,已消费的数据offset没有被提交,下次重启就会产生重复消费。(因为消费者是定期向zk提交offset的,而不是消费一条数据提交一条)
6.MQ重复消费的时候如何保证系统的幂等性?
结合具体业务分析,基于数据库的唯一键来保证数据不会重复插入;
若数据写入Redis中,保存为set格式,天然幂等;
亦或给每条数据加一条全局唯一id,每次消费之前去Redis判断一下是否消费过了即可。
7.怎么保证消息可靠性传输(如何处理消息丢失问题)?
消费端保证数据:kafka的消费者关闭自动提交offset,改为手动提交offset
kafka保证数据不丢:leader还没同步到follower时宕机了
设置4个参数:
1.给topic设置replication.factor参数,必须大于1,要求partition至少2个副本
2.在kafka服务端设置min.insync.replicas参数,必须大于1,要求leader至少感知有一个follower跟自己保持通信
3.生产者端设置acks=all:要求每条数据必须是写入所有replication副本后才认为写入成功
4.生产者端设置retries=MAX(一个很大的值),一旦写入失败就无限重试,卡在这里
8.如何保证消息的顺序性?
kafka可保证写入一个partition中的数据一定是有顺序的,一个消费者消费一个partition,一定是有顺序的。
一个消费者开启多线程处理就可能出现顺序问题,利用内存队列queue分发+多线程,即可保证顺序也可保证高吞吐量
9.消息队列满了怎么处理,有几百万条消息持续积压几个小时怎么解决?
系统故障,消费者挂了,积压了几百万的数据,现在系统恢复了,只能操作临时紧急扩容来消积数据:
先修复consumer消费速度,然后新建一个topic,partition为原来的10倍,将积压的数据通过临时分发的consumer程序,轮询的写入新建的topic中,就有10倍数量的消息队列,接着临时征用10倍的机器来部署consumer,每一批消费一个消息队列的数据,这样相当于以正常10倍的速度消费积压的数据。
10.如果让你写一个消息队列,你怎么设计架构?
首先要支持可伸缩性(扩容):设计一个分布式的系统,参照kafka,broker->topic->partition
其次要考虑mq的数据要落磁盘:保证数据不会丢失,磁盘顺序写入磁盘
其次要考虑mq的可用性:kafka的高可用保障机制,多副本->leader&follower->broker挂了重新选举leader对外服务
最后还有考虑mq的数据0丢失:参考问题7答案
消息队列kafka的面试问题汇总相关推荐
- 分布式消息队列 Kafka
分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala 具有高吞吐.可扩展.分布式等特点 适用场景 活动数 ...
- 消息队列 Kafka的架构原理 (小白必看)
最终大家会掌握 Kafka 中最重要的概念,分别是 Broker.Producer.Consumer.Consumer Group.Topic.Partition.Replica.Leader.Fol ...
- 阿里云消息队列Kafka商业化:支持消息无缝迁移到云上
摘要: 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态.在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性9 ...
- 阿里云正式推出消息队列Kafka:全面融合开源生态
摘要: 在全面兼容Apache Kafka生态的基础上,消息队列Kafka彻底解决Apache Kafka稳定性不足的长期痛点,并且支持消息无缝迁移到云上. 近日,阿里云宣布正式推出消息队列Kafka ...
- 光速入门消息队列Kafka
文章目录 光速入门消息队列Kafka 消息队列 知识要点 2.1 背景.问题的产生 2.2 消息队列应运而生 2.3 消息队列的特点 认识kafka 知识要点 2.1 认识kafka 2.2 kafk ...
- java消息队列-kafka
Kafka的原理是怎么样的?[面试6.0] Kafka由broker,topic,partition组成 broker: 一个kafka应用实例(节点) topic: 主题,一个主题对应多个parti ...
- 消息队列系列之分布式消息队列Kafka
介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢? 我们认为流媒体平台具有三个关键功能: 它可以让你发布和订阅记录流.在这方面,它类似于消息队列或企业消息传递系统. 它允许 ...
- 关于使用消息队列今天被面试官问倒了
为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么? 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务 ...
- 【中间件】大数据之分布式消息队列Kafka
目录 Kafka设计动机 Kafka特点 Kafka设计架构 基本架构 Kafka各组件详解 Kafka关键技术点 典型应用场景 在大数据数据收集环节,需要构建数据流水线,其中一种方式可以 ...
最新文章
- 这是我见过最通俗易懂的 装饰者模式 讲解了!
- linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...
- mysql percona server_MySQL Study之--Percona Server版本
- 《C语言课程设计》一3.1 文件复制
- 你这种直来直去的英语,买家受不了
- OC学习篇之---归档和解挡
- JDBC原理之层次结构
- 盘点几种数据库的分页SQL的写法(转)
- [转]apache MPM介绍
- 【OO学习】OO第二单元作业总结
- c语言机考答案,全国计算机等级考试C语言上机试题题库(内附答案)
- 求数组第二大元素 和 字符串拷贝的实现
- python 删除第三方库_python中通过pip安装的第三方库在哪里
- toString方法;ToStringBuilder
- Unity3d游戏开发用哪个语言更好?
- Mysql之Specified key was too long; max key length is 767 bytes
- 风口的猪-中国牛市(动态规划)----百度2016研发工程师在线编程题
- PHP在线运行,在线编译
- 为什么要统一 API 网关
- 阿狸和桃子的游戏题解