消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka 前言 文章开始前,我们先了解一下什么是消息中间件? 什么是中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件. 什么是消息中间件? 是关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统 图示:   ​ 消息中间件RabbitMQ+ActiveMQ+Kafka的对比   ​ 接下来就是消息中间件面试题RabbitMQ+ActiveMQ+Kafka R…
之前学习过RabbitMQ,并且还安装过.安装记录的文章如下: Erlang:http://www.cnblogs.com/charlesblc/p/5512380.html RabbitMQ:http://www.cnblogs.com/charlesblc/p/5516585.html 可见,好记性不如烂笔头.还是要记录呀! 另外,分类特别重要,用标题搜索rabbitmq根本搜不到,从"安装部署"分类里面才搜到的.所以分类还是要细致呀! 准备看这篇文章: http://blog.c…
之前学习过RabbitMQ,并且还安装过.安装记录的文章如下: Erlang:http://www.cnblogs.com/charlesblc/p/5512380.html RabbitMQ:http://www.cnblogs.com/charlesblc/p/5516585.html 可见,好记性不如烂笔头.还是要记录呀! 另外,分类特别重要,用标题搜索rabbitmq根本搜不到,从“安装部署”分类里面才搜到的.所以分类还是要细致呀! 准备看这篇文章: http://blog.csdn.n…
这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.…
最近研究消息队列,发现好几个框架,搜罗一下进行对比,说一下选型说明: 1)中小型软件公司,建议选RabbitMQ.一方面,erlang语言天生具备高并发的特性,而且他的管理界面用起来十分方便.不考虑rocketmq和kafka的原因是,一方面中小型软件公司不如互联网公司,数据量没那么大,选消息中间件,应首选功能比较完备的,所以kafka排除.RocketMQ也很不错,只是没有RabbitMQ出来的早,文档和网上的资料没有RabbitMQ多,但也是很不错,RocketMQ是阿里出品,现在阿里已经把…
这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.…
「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security 如何选择? 正文   消息队列(MQ) 在百度百科中,消息队列(MQ)是这么解释的:“消息队列”是在消息的传输过程中保存消息的容器(可存可取). 它是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰和降低系统耦合性. 异步处理:多应用对消息队列中同一消息进行处理,应用间…
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. 二哥,你好,找工作找了仨月,还没有找到,很焦虑,我该怎么办呢?你那有没有 Java 方面的面试题可以分享一波啊? 以上是读者田田给我发的私信,看完后于我心有戚戚焉啊,最近境况确实不容乐观,并非是个人的原因造成的.那,既然需要面试题,二哥就义不容辞,必须得准备一波. 这次我花了一周的时间,准备了 31…
今天我们一起来探讨: 全量的消息队列究竟有哪些? Kafka.RocketMQ.RabbitMQ的优劣势比较 以及消息队列的选型 最全MQ消息队列有哪些 那么目前在业界有哪些比较知名的消息引擎呢?如下图所示 这里面几乎完全列举了当下比较知名的消息引擎,包括: ZeroMQ 推特的Distributedlog ActiveMQ:Apache旗下的老牌消息引擎 RabbitMQ.Kafka:AMQP的默认实现. RocketMQ Artemis:Apache的ActiveMQ下的子项目 Apollo…
前言 小伙伴们,通过前边文章的阅读,相信大家已经对RocketMQ的基本原理有了一个比较深入的了解,那么大家对当前比较常用的RabbitMQ和Kafka是不是也有兴趣了解一些呢,了解的多一些也不是坏事,面试或者跟人聊技术的时候也会让你更有话语权嘛. 那王子今天就跟大家聊一聊RabbitMQ和Kafka在处理高可用集群时的原理,看看它们与RocketMQ有什么不同.小伙伴们可以重新温习一下常见的消息中间件有哪些?你们是怎么进行技术选型的?这篇文章,了解一下他们之间的区别. RabbitMQ的高可用…
============================RabbitMQ 术语============================RabbitMQ 有很多术语和Kafka不一样, 理解这些术语十分重要. 1. Broker: 一个RabbitMQ实例就是一个 Broker. 2. VHost(Virtual Host): 一个RabbitMQ实例可包含多个VHost, 每个VHost都有自己的身份验证机制. 在一个VHost中包含多个exchange和队列和binding. 每个Rabbit…
老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o…
提示 自己整合的答案,虽有百家之所长,仍很局限,如有需要改进的地方,或者有更好的答案,欢迎提出! [合理利用 Ctrl+F 提高查找效率] 文章来源    https://www.cnblogs.com/pupilheart/articles/9786253.html 第一部分 Python基础篇(80题) 1.为什么学习Python? # 因为python相对其他语言非常优雅简洁,有着丰富的第三方库,我感觉很强大.很方便; # 还有就是,我感觉python简单易学,生态圈庞大,例如:web开发…
转自通九大神的博客 起因 最近公司RabbitMQ的集群出了点问题,然后有些亲就说RabbitMQ慢且不好用,是一个瓶颈,不如换成Kafka.而我本人,使用RabbitMQ有一点久了,认为这个事情应当辩证的去看.所以就在没事的时候简单的看了看RabbitMQ的代码.但是我并没有看太多Kafka的代码,我只简单提下. 关于Kafka 根据Kafka官方的文档,Kafka可以被认为一个高大上的集群消息中间件,但是读了下以前一个朋友给的部署文档和Kafka的官方的文档.发现Kafka确实不错,真的可以…
前言 前一篇文章<RabbitMQ和Kafka到底怎么选?>,我们在吞吐量方面比较了Kafka和RabbitMQ,知道了Kafka的吞吐量要高于RabbitMQ.本文从可靠性方面继续探讨两个队列的差异. RabbitMQ可靠性 我们通过前文知道,RabbitMQ的队列分为master queue和mirror queue,mirror queue 在master queue宕机之后,会被提升为master queue,如下图所示. 队列A的consumer在消费的时候,机器宕机,此时客户端和服…
前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措.对于RabbitMQ和Kafka,到底应该选哪个? RabbitMQ架构 RabbitMQ是一个分布式系统,这里面有几个抽象概念. broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求. master queue:每个队列都分为一个主队列和若干个镜像队列. mirror queue:镜像队列,作为master queue的备份…
我目前的项目最后使用的是RabbitMQ,这里依然是结合网上大神们的优秀博客,对kafka和rabbitmq进行简单的比对.最后附上参考博客. 1.架构模型 rabbitmq RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键:客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到con…
一.RabbitMQ实例介绍RabbitMQ实例由华为云分布式消息服务(DMS)团队打造,实例采用物理隔离的方式部署,租户独占RabbitMQ实例.一键式部署,完全兼容开源RabbitMQ的使用方式,真正做到服务零改动快速迁移,大大节省维护和使用成本. 产品特点1.一键式部署 用户只需要在实例管理界面点击申请按钮,提交订单.后台将自动创建部署完成一整套RabbitMQ实例. 2.即时可用 用户只要等待实例创建完成后即可正常访问使用. 3.业务零修改迁移 完全兼容开源的RabbitMQ使用方式.使…
MQ框架非常之多,今天简单说一下有代表性的两个MQ(rabbitmq和kafka).经常会有人问rabbitmq和kafka到底哪个好呢?其实没有好与不好之分,只有哪个更合适,首先要根据自己项目的业务场景和需求来选择更合适的一个MQ. 在应用场景方面 rabbitmq遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上. kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上. 在架构…
RabbitMQ和Kafka可靠性 https://www.cnblogs.com/haolujun/p/9641840.html 我们通过前文知道,RabbitMQ的队列分为master queue和mirror queue,mirror queue 在master queue宕机之后,会被提升为master queue,如下图所示. 队列A的consumer在消费的时候,机器宕机,此时客户端和服务端分别做如下动作: 服务端:把mirror queue提升为master queue 客户端:连…
面试题 31. 栈的压入.弹出序列 NowCoder LeetCode 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1.2.3.4.5 是某栈的压栈序列,序列 4.5.3.2.1 是该压栈序列对应的一个弹出序列,但 4.3.5.1.2 就不可能是该压栈序列的弹出序列. Java 实现 import java.util.Stack; public class Solution { public boolean…
RabbitMQ和Kafka都提供持久的消息保证.两者都提供至少一次和至多一次的保证,另外,Kafka在某些限定情况下可以提供精确的一次(exactly-once)保证. 让我们首先理解一下上述术语的含义: 至多一次投递:消息绝对不会被重复投递,但是消息可能丢失 至少一次投递:消息绝对不会被丢失,但是有可能重复被消费 精确的一次投递:消息系统的圣杯.所有的消息精确的被投递一次. “投递”貌似不是准确的语言描述,“处理”才是.无论怎么描述,我们关心的是,消费者能否处理消息,以及处理的次数.但是使用…
# 前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措.对于RabbitMQ和Kafka,到底应该选哪个? # RabbitMQ架构 ## 概念 RabbitMQ是一个分布式系统 **broker**:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求. **master queue**:每个队列都分为一个主队列和若干个镜像队列. **mirror queue**:镜像队列,作为maste…
前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措. 对于RabbitMQ和Kafka,到底应该选哪个? RabbitMQ架构 RabbitMQ是一个分布式系统,这里面有几个抽象概念. broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求. master queue:每个队列都分为一个主队列和若干个镜像队列. mirror queue:镜像队列,作为master queue的备…
背景 本公司是.Net项目,在.Net可选的MQ比较少,主要Kafka和RabbitMQ,RabbitMQ我也是使用多年了,最近的Kafka广告与流行度打得使我也是无法无视,因此也是花了点时间收集了资料做了些对比. 此外有个小插曲,当我形成了文档让老板兼CTO对比决策后,他打算上阿里云买MQ服务.我当时给他开了个玩笑:您这价钱把我请回来,而且公司还有运维,其实完全可以自己维护,要不我来负责,你把这每个月的MQ费用给我加工资得了.当我下楼买了支维他柠檬茶后,他决定由我们自己搭建RabbitMQ.这…
几种MQ产品说明: ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ :结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护 ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多).,支持持久化到数据库,对队列数较多的情况支持不好,不过我…
rocketmq 4.3开始支持事务https://www.cnblogs.com/hzmark/p/rocket_txn.html 参考:rabbitMQ.activeMQ.zeroMQ.Kafka.Redis 比较 redis vs rabbitmq 可靠消费 Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费 可靠发布 Reids…
一.activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的.配置和使用,基本上是java xml这一套.同时对jms.spring之类的支持很友好. 而且因为是Java写的,所以可以作为一个jar包,放到java项目里,用代码启动和配置,这个对于java开发者而言是不是相当爽?毕竟还是有些场景,需要我们把队列放到自己项目内部,随项目启动而启动的.而且,还可以类似拓展tomcat一…
RabbitMQ:     RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现.AMQP的主要特征是面向消息.队列.路由(包括点对点和发布/订阅).可靠性.安全.AMQP协议更多用在企业系统内,对数据一致性.稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次.   Kafka:       是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目. Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就…
RabbitMQ 面试题 1.什么是 rabbitmq 2.为什么要使用 rabbitmq 3.使用 rabbitmq 的场景 4.如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息? 5.如何避免消息重复投递或重复消费? 6.消息基于什么传输? 7.消息如何分发? 8.消息怎么路由? 9.如何确保消息不丢失? 10.使用 RabbitMQ 有什么好处? 11.RabbitMQ 的集群 12.mq 的缺点 1.什么是 rabbitmq 采用 AMQP 高级消息队列协议的一…