南阳谁会做网站,备案网查询化妆品,直播网站建设方案,地方网站推广上篇文章给大家简单介绍了一下RocketMQ#xff0c;今天给大家说一说几款MQ产品有什么区别。目前市面上常用的MQ有#xff1a;1、RocketMQ 2、RabbitMQ 3、ActiveMQ 4、Kafka 5、ZeroMQ一、几种MQ的介绍①RocketMQ阿里系下开源的一款分布式、队列模型的消息中间件#xff0c;… 上篇文章给大家简单介绍了一下RocketMQ今天给大家说一说几款MQ产品有什么区别。 目前市面上常用的MQ有1、RocketMQ 2、RabbitMQ 3、ActiveMQ 4、Kafka 5、ZeroMQ一、几种MQ的介绍①RocketMQ阿里系下开源的一款分布式、队列模型的消息中间件原名Metaq3.0版本名称改为RocketMQ是阿里参照kafka设计思想使用java实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合只维护核心功能去除了所有其他运行时依赖保证核心功能最简化在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构目前主要多用于订单交易系统。具有以下特点能够保证严格的消息顺序提供针对消息的过滤功能提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力②RabbitMQ 使用Erlang编写的一个开源的消息队列本身支持很多的协议AMQPXMPP, SMTP,STOMP也正是如此使的它变的非常重量级更适合于企业级的开发。同时实现了Broker架构核心思想是生产者不会将消息直接发送给队列消息在发送给客户端时先在中心队列排队。对路由(Routing)负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。③ActiveMQ Apache下的一个子项目。使用Java完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现少量代码就可以高效地实现高级应用场景。可插拔的传输协议支持比如in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多种语言客户端 C、Java、.Net,、Python、 Php、 Ruby等。④Kafka Apache下的一个子项目使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统具有以下特性快速持久化通过磁盘顺序读写与零拷贝机制可以在O(1)的系统开销下进行消息持久化高吞吐在一台普通的服务器上既可以达到10W/s的吞吐速率高堆积支持topic下消费者较长时间离线消息堆积量大完全的分布式系统Broker、Producer、Consumer都原生自动支持分布式依赖zookeeper自动实现复杂均衡支持Hadoop数据并行加载对于像Hadoop的一样的日志数据和离线分析系统但又要求实时处理的限制这是一个可行的解决方案。⑤ZeroMQ 号称最快的消息队列系统专门为高吞吐量/低延迟的场景开发在金融界的应用中经常使用偏重于实时数据通信场景。ZMQ能够实现RabbitMQ不擅长的高级/复杂的队列但是开发人员需要自己组合多种技术框架开发成本高。因此ZeroMQ具有一个独特的非中间件的模式更像一个socket library你不需要安装和运行一个消息服务器或中间件因为你的应用程序本身就是使用ZeroMQ API完成逻辑服务的角色。但是ZeroMQ仅提供非持久性的队列如果down机数据将会丢失。如Twitter的Storm中使用ZeroMQ作为数据流的传输。ZeroMQ套接字是与传输层无关的ZeroMQ套接字对所有传输层协议定义了统一的API接口。默认支持 进程内(inproc) 进程间(IPC) 多播TCP协议在不同的协议之间切换只要简单的改变连接字符串的前缀。可以在任何时候以最小的代价从进程间的本地通信切换到分布式下的TCP通信。ZeroMQ在背后处理连接建立断开和重连逻辑。特性无锁的队列模型对于跨线程间的交互(用户端和session)之间的数据交换通道pipe采用无锁的队列算法CAS在pipe的两端注册有异步事件在读或者写消息到pipe的时会自动触发读写事件。批量处理的算法对于批量的消息进行了适应性的优化可以批量的接收和发送消息。多核下的线程绑定无须CPU切换区别于传统的多线程并发模式信号量或者临界区zeroMQ充分利用多核的优势每个核绑定运行一个工作者线程避免多线程之间的CPU切换开销。二、MQ之间的比较书卷多情似故人晨昏忧乐每相亲。眼前直下三千字胸次全无一点尘。活水源流随处满东风花柳逐时新。金鞍玉勒寻芳客未信我庐别有春。——明代于谦《观书》