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的面试问题汇总相关推荐

  1. 分布式消息队列 Kafka

    分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala 具有高吞吐.可扩展.分布式等特点 适用场景 活动数 ...

  2. 消息队列 Kafka的架构原理 (小白必看)

    最终大家会掌握 Kafka 中最重要的概念,分别是 Broker.Producer.Consumer.Consumer Group.Topic.Partition.Replica.Leader.Fol ...

  3. 阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

    摘要: 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态.在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性9 ...

  4. 阿里云正式推出消息队列Kafka:全面融合开源生态

    摘要: 在全面兼容Apache Kafka生态的基础上,消息队列Kafka彻底解决Apache Kafka稳定性不足的长期痛点,并且支持消息无缝迁移到云上. 近日,阿里云宣布正式推出消息队列Kafka ...

  5. 光速入门消息队列Kafka

    文章目录 光速入门消息队列Kafka 消息队列 知识要点 2.1 背景.问题的产生 2.2 消息队列应运而生 2.3 消息队列的特点 认识kafka 知识要点 2.1 认识kafka 2.2 kafk ...

  6. java消息队列-kafka

    Kafka的原理是怎么样的?[面试6.0] Kafka由broker,topic,partition组成 broker: 一个kafka应用实例(节点) topic: 主题,一个主题对应多个parti ...

  7. 消息队列系列之分布式消息队列Kafka

    介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢? 我们认为流媒体平台具有三个关键功能: 它可以让你发布和订阅记录流.在这方面,它类似于消​​息队列或企业消息传递系统. 它允许 ...

  8. 关于使用消息队列今天被面试官问倒了

    为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么? 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务 ...

  9. 【中间件】大数据之分布式消息队列Kafka

    目录 Kafka设计动机 Kafka特点 Kafka设计架构 基本架构 Kafka各组件详解 Kafka关键技术点 典型应用场景       在大数据数据收集环节,需要构建数据流水线,其中一种方式可以 ...

最新文章

  1. 这是我见过最通俗易懂的 装饰者模式 讲解了!
  2. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...
  3. mysql percona server_MySQL Study之--Percona Server版本
  4. 《C语言课程设计》一3.1 文件复制
  5. 你这种直来直去的英语,买家受不了
  6. OC学习篇之---归档和解挡
  7. JDBC原理之层次结构
  8. 盘点几种数据库的分页SQL的写法(转)
  9. [转]apache MPM介绍
  10. 【OO学习】OO第二单元作业总结
  11. c语言机考答案,全国计算机等级考试C语言上机试题题库(内附答案)
  12. 求数组第二大元素 和 字符串拷贝的实现
  13. python 删除第三方库_python中通过pip安装的第三方库在哪里
  14. toString方法;ToStringBuilder
  15. Unity3d游戏开发用哪个语言更好?
  16. Mysql之Specified key was too long; max key length is 767 bytes
  17. 风口的猪-中国牛市(动态规划)----百度2016研发工程师在线编程题
  18. PHP在线运行,在线编译
  19. 为什么要统一 API 网关
  20. 阿狸和桃子的游戏题解

热门文章

  1. 苹果手机升级后怎么恢复旧版本_苹果手机误删了重要短信怎么恢复?
  2. Android rom开发:长按Power键关机/重启优化,告别长时间等待
  3. excel未保存强制关闭计算机,win7系统excel文件没保存就关机了怎么修复
  4. 空格 + %20 三者的注意事项
  5. 强烈推荐四款高效率办公软件
  6. 设计模式之禅-代理模式
  7. Python游戏之Pygame——太空飞机大战(四)
  8. 1、亲密数,你亲密个锤子哦
  9. java毕设项目驾校管理系统(附源码)
  10. 网络安全事件应急演练规划