概述
常见的MQ产品
/ | RabbitMQ | ActiveMQ | RicketMQ | Kafka |
---|---|---|---|---|
公司/社区 | Rabbit | Aoacge | 阿里 | Apache |
开发语言 | Erlang | Java | Java | Scala&Java |
协议支持 | ANQP,XMPP,SMTP,STOMP | OpenWire,STOMP,REST,XMPP,AMQP | 自定义 | 自定义协议,社区封装了http协议支持 |
客户端支持语言 | 官方支持Erlang,Java,Ruby等,社区产出多重API,几乎支持所有语音 | Java,C,C++,Python,PHP,Perl,.net等 | Java,C++(不成熟) | 官方支持Java,社区产出多重API,如PHP,Python等 |
单季吞吐量 | 万级(其次) | 万级(最差) | 十万级(最好) | 十万级(其次) |
消息延迟 | 微秒及 | 毫秒级 | 毫秒级 | 毫秒以内 |
功能特性 | 并发能力强,性能及其好,延时低,社区活跃,管理界面丰富 | 老牌产品,成熟度高,文档较多 | MQ功能比较完备,扩展性佳 | 只支持主要的MQ功能,毕竟是为大数据领域准备的 |
MQ优势
应用解耦:提高系统容错性和可维护性
异步提速:提升用户体验和系统吞吐量
削峰填谷:提高系统稳定性
MQ劣势
系统可用性降低:引入外部依赖越多,系统稳定性越差,MQ宕机就会对业务造成影响,要保证MQ的高可用
系统复杂度提高:从系统间同步调用转为通过MQ进行异步调用,如何保证消息没有被重复消费?怎么处理消息丢失情况?保证消息传递的顺序性
一致性问题:通过MQ给B/C/D系统发消息数据,如果B/C系统处理成功,D系统处理失败,如何保证消息数据处理的一致性?
MQ小结:
1.生产者不需要重消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,这才让明明下层的动作还没做,上层却当成动作做完了继续往后走,即所谓异步成为了可能。
2.允许短暂的不一致
3.确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过管理加入MQ这些成本
RabbitMQ官网地址:http://www.rabbitmq.com
安装文档:资料/软件/安装 RabbitMQ.md
最后
以上就是伶俐网络为你收集整理的MQ的基本概念常见的MQ产品的全部内容,希望文章能够帮你解决MQ的基本概念常见的MQ产品所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复