常用消息中间件对比

本文正在参与【[ 一起秋招吧 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~

大家好,我是小羽,专注于后端开发相关知识的分享。今天将给大家带来的是关于后端面试关于常用消息中间件的对比介绍。

消息队列的优缺点,使用场景

优点:
1、解耦,降低系统之间的依赖
2、异步处理,不需要同步等待
3、削峰填谷,将流量从高峰期引到低谷期进行处理
缺点:
1、增加了系统的复杂度,幂等、重复消费、消息丢失等问题的带入
2、系统可用性降低,mq的故障会影响系统可用
3、一致性,消费端可能失败
场景:日志采集、发布订阅等

如何保证消息不被重复消费

幂等:一个数据或者一个请求,重复来多次,确保对应的数据是不会改变的,不能出错。
思路:

  • 如果是写 redis,就没问题,反正每次都是 set ,天然幂等性
  • 生产者发送消息的时候带上一个全局唯一的id,消费者拿到消息后,先根据这个id去 redis里查一
    下,之前有没消费过,没有消费过就处理,并且写入这个 id 到 redis,如果消费过了,则不处理。
  • 基于数据库的唯一键

    Kafka、ActiveMQ、RabbitMQ、RocketMQ 对比

    ActiveMQ:JMS规范,支持事务、支持XA协议,没有生产大规模支撑场景、官方维护越来越少
    RabbitMQ:erlang语言开发、性能好、高并发,支持多种语言,社区、文档方面有优势,erlang语言
    不利于java程序员二次开发,依赖开源社区的维护和升级,需要学习AMQP协议、学习成本相对较高
    以上吞吐量单机都在万级
    kafka:高性能,高可用,生产环境有大规模使用场景,单机容量有限(超过64个分区响应明显变
    长)、社区更新慢
    吞吐量单机百万
    rocketmq:java实现,方便二次开发、设计参考了kafka,高可用、高可靠,社区活跃度一般、支持语
    言较少
    吞吐量单机十万
#秋招##面前三分钟##面试八股文##面霸的自我修养##2023一起秋招吧#
全部评论
每天一点新知识,多谢大神
点赞 回复 分享
发布于 2022-08-29 11:12 江苏

相关推荐

头像 会员标识
06-06 21:46
门头沟学院 Java
怎么说呢,感觉跟我看的面经不太一样,和我准备的更是大相径庭。1、自我介绍2、项目拷打(1) 我感觉是我不太理解面试官的问题。面试官问 “怎么实现登录模块,鉴权保证,业务完备性”,我听起来感觉是这个意思。然后大概互相掰扯大概下面几个方面:密码传输加密(HTTPS + 前端哈希)与存储强哈希(BCrypt);多因素认证与失败次数限制(防暴力破解);会话安全管理(JWT/Redis + 过期策略);攻击防御(SQL 注入、CSRF、XSS)与日志审计。但是似乎感觉面试官不是很满意我的回答,觉得我的回答很多是技术相关的。蒟蒻牛真的想不到要怎么回答啊啊啊啊啊。求牛友解答。然后面试官就继续根据我回答的一些内容,可能是感兴趣的,问:对称加密和非对称加密。JWT怎么实现,然后我就讲了一下这个的组成,讲了JWT的三部分,再简单结合我的项目讲了一下JWT场景使用的流程。后面好像还延伸了一些问题,好像是跟我上面掰扯的几个方面详细问了一下。因为后面还有个笔试,忘记了。我们这个项目遇到的挑战。直接巴拉巴拉讲了一堆,项目上线遇到的一些问题反馈和解决方案。然后顺带问了一下项目里面的MQ的幂等性和可靠性。然后引出“明天高考,如果考生想要查看高考分数,应该怎么高效快速得知自己的分数”。因为前面面试官铺垫“河南省,很多考生,高考查分”,然后我的侧重点就再高并发和可用性啥的上面了,但是面试官说不是想问这个,说是想要查看“某一个考生的分数”,经过一波(忘记了)的说明/提示,说是要用怎样的排序算法,能够快速知道自己的分数/成绩。然后,脑子里全是快排和归并排序,胡编乱造分数的随机性啥的,选了个归并排序,结果面试官(提示?)强调分数只有0到150(我的理解是分数上限是固定而且比较小的),然后我回答“桶排序”,似乎面试官是想要这个答案?继续问问什么使用桶排序,(完蛋了,排序还是两年前学的,现在都没怎么记得少用的排序桶排序了,就掰扯了一小会)。面试官继续问“如果使用桶排序的话,怎么查到这个考生的成绩,复杂度是多少?”,怕什么来什么,最后似乎记错了,然后就拷打收尾了。我不知道为什么只问第二个项目,而且还是问“登录模块”的,其实还有一个项目是青训营做的微服务项目,但是似乎面试官不感兴趣,难道是那个项目是学校团队合作做的?已经上线使用了?嗯嗯嗯,不理解,求解。最后:算法题:leetcode678(非hot100),没刷到,感觉这个题很熟悉,但是似乎没做过(可能之前算法比赛训练有做过,但是忘记了),大概讲了一下思路,然后面试官问了一下时间复杂度、空间复杂度。反问:业务end:只能说,跟tencent的真的很不一样的面试提问
查看6道真题和解析
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务