rocketmq 几种队列_关于RocketMQ的知识

    上篇文章给大家简单介绍了一下RocketMQ,今天给大家说一说几款MQ产品有什么区别。

    目前市面上常用的MQ有:

1、RocketMQ 2、RabbitMQ 3、ActiveMQ 4、Kafka 5、ZeroMQ

一、几种MQ的介绍

①RocketMQ

阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用java实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖,保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构,目前主要多用于订单交易系统。

具有以下特点:

  • 能够保证严格的消息顺序

  • 提供针对消息的过滤功能

  • 提供丰富的消息拉取模式

  • 高效的订阅者水平扩展能力

  • 实时的消息订阅机制

  • 亿级消息堆积能力

②RabbitMQ

        使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, 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之间的比较

5c440dbba6e03d2bf2de64b065c26ac9.png

书卷多情似故人,晨昏忧乐每相亲。眼前直下三千字,胸次全无一点尘。

活水源流随处满,东风花柳逐时新。金鞍玉勒寻芳客,未信我庐别有春。

——明代于谦《观书》

a980420dee6c4f43497f8f564e375999.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学号从小到大的顺序输出学生的信息。

请编写一个程序&#xff0c;使用字典存储学生信息&#xff0c;学生信息包括学号和姓名&#xff0c;请根据学号从小到大的顺序输出学生的信息。 length int(input("请输入学生总数&#xff1a;")) dict_1 {} i 1 while i < length:id int(input("请输入第…

seata执行闪退_Seata 1.2.0的配置以及踩坑记录

首先Seata1.2.0版本不在自带sql&#xff0c;且在file.conf文件中没有了vgroup_mapping.fsp_tx_group “default” 这项配置数据库SQLseata数据库 drop table if exists global_table;create table global_table (xid varchar(128) not null,transaction_id bigint,status tinyi…

Python实现简单的学生管理系统

学生管理系统 student_infos [] #打印功能提示 def print_menu():print("" * 30)print("学生管理系统v1.0")print("1.添加学生信息")print("2.删除学生信息")print("3.修改学生信息")print("4.显示所有学生信息"…

vue仿饿了么点餐手机端

vue仿饿了么点餐手机端模板&#xff0c;包括评论&#xff0c;商品&#xff0c;商家模块&#xff0c;添加商品到购物车&#xff0c;左侧分类计数功能&#xff0c;右侧滑动时分类有上推功能&#xff0c;小球飞入购物车功能。

python123九宫格输入法_《啊哈C语言-2016最新修正版》.pdf

《啊哈C语言-2016最新修正版》.pdf| 啊哈C语言|后续内容还请关注[ ][ ][[ 网站首页 ]][ ][ ][[ 网站问答 ]] /qa[ ][ ][[ 新浪微博 ]] /ahalei[ ][ ][[ 人人主页 ]] /601196462如果您有任何建议您&#xff0c;可以在 上留言&#xff0c;或者骚扰书写匆忙&#xff0c;欢迎批评纠…

数据库复习资料及课后习题答案

数据库概论 1.1 基本内容分析 1.1.1 本章的重要概念 DB、DBMS和DBS的定义 &#xff08;2&#xff09;数据管理技术的发展阶段 人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。 &#xff08;3&#xff09;数据描述 概念设计、逻辑设计…

apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了

点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Promise yourself to be so strong that nothing can disturb your peace of mind. 对自己承诺&#xff1a;我要强大到任何事情都无法破坏我内心的平和。 每日掏心话 每一发奋努力的背后&a…

python 运行时间 装饰器_python 装饰器统计某个函数的运行时间

import datetimedef count_time(func):def int_time(*args, **kwargs):start_time datetime.datetime.now() # 程序开始时间func()over_time datetime.datetime.now() # 程序结束时间total_time (over_time-start_time).total_seconds()print(程序共计%s秒 % total_time)ret…

《大学计算机基础》试题题库及答案

一、单选题练习 1&#xff0e;完整的计算机系统由&#xff08; C &#xff09;组成。A&#xff0e;运算器、控制器、存储器、输入设备和输出设备B&#xff0e;主机和外部设备C&#xff0e;硬件系统和软件系统D&#xff0e;主机箱、显示器、键盘、鼠标、打印机2&#xff0e;以…

docker添加新的环境变量_Docker环境变量

环境变量环境变量通常在与您正在使用的基本映像关联的Dockerfile中设置。也有Docker为每个新容器自动设置的环境变量。您可以指定其他变量&#xff0c;并使用-e或--env选项重新定义Docker设置的变量。在Docker运行配置中&#xff0c;您可以使用“环境变量(Environment variable…

c语言期末考试复习题

单项选择题 1&#xff0e;&#xff08; A &#xff09;是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2&#xff0e;C语言程序从 C 开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 …

js制定一个单选按钮_【下】每个月整理发票太头疼?手把手教你快速开发一个工具解决!...

"NightTeam"&#xff0c;一个值得加星标的公众号。在上篇中&#xff0c;我们已经将我们的发票管理工具开发到了能一键导入发票、能看到效果、能仍然不太方便地管理的状态&#xff0c;接下来我们来继续将还没有加进去的那些方便的功能给加上&#xff0c;以将管理发票的…

exec go 重启_无停机优雅重启 Go 程序

什么是优雅重启在不停机的情况下&#xff0c;就地部署一个应用程序的新版本或者修改其配置的能力已经成为现代软件系统的标配。这篇文章讨论优雅重启一个应用的不同方法&#xff0c;并且提供一个功能独立的案例来深挖实现细节。如果你不熟悉 Teleport 话&#xff0c;Teleport 是…

ai怎么让图片任意变形_想一键提取图片文字,有什么好的文字识别软件/APP推荐吗?...

工作也有一段时间了&#xff0c;有时候需要把图片中的文字提取出来&#xff0c;转换成电子档式&#xff0c;一开始的时候可能是傻吧&#xff0c;也没想到借用工作减少工作量&#xff0c;就知道埋头拼命敲敲打打&#xff0c;文字比较少的时候还好&#xff0c;多了简直...得颈椎病…

MySql和Oracle数据库的区别?

查询当前所有的表 SQL> select * from tab; SQL> select * from cat where table_type’TABLE’;//可能会有view SQL>select * from user_tables; mysql> show tables; c:/mysql/bin>mysqlshow 库名 显示当前连接用户&#xff08;库&#xff09; SQL> sh…

隐藏功能_IOS 14.2 隐藏功能

FaceTime隐藏功能现身&#xff0c;只要设备运行 iOS 14.2 系统&#xff0c;iPhone 8 或更新的机型都可以以 1080p 分辨率进行视频通话&#xff0c;1080p什么概念&#xff0c;平时看视频应该最有感触。FaceTime 是什么&#xff1f;可能有些小伙伴压根儿就没听说过这个功能。Face…

SSH框架(Struts+Spring+Hibernate)

在SSH 的组合框架模式中&#xff0c;三者各自的作用&#xff1f; Struts 是一个很好的MVC框架&#xff0c;主要技术是Servlet和Jsp。Struts的MVC设计模式可以使我们的逻辑变得很清晰&#xff0c;让我们写的程序层次分明。基于Struts开发可以简化开发难度&#xff0c;提高开发效…

mapbox矢量切片标准_Cesium 加载矢量切片(MapBox Vector Tile)

矢量切片(vector tile)是当前 WebGIS 较热技术&#xff0c;国内的高德、百度等在线地图都使用了矢量切片技术。相较于传统栅格切片&#xff0c;矢量切片好处很多。简单几点就是&#xff1a;轻量、客户端渲染、还可加密(栅格切片容易被爬取)。矢量切片格式一般有 GeoJSON、TopoJ…

d630无电池升级bios_太重要,你想要的电脑BIOS全面解读与设置(下)

设置意外断电后恢复状态通常在电脑意外断电后&#xff0c;需要重新启动电脑&#xff0c;但在 BIOS 中可以对断电恢 复进行设置&#xff0c;一旦电源恢复&#xff0c;电脑将自动启动。下面就在 UEFIBIOS 中设置电 脑的自动断电后重启&#xff0c;具体操作步骤如下。 STEP 1 选择…

MySQL的乱码解决方案

1.如果第一次安装MySQL数据库: 在选择编码时&#xff0c;选择最后一项&#xff0c;并指定编码为utf8或者gbk&#xff08;这两种编码支持中文,是我们比较常用的&#xff09; 如果已经按照完成了MySQL数据库&#xff0c;那么可以进行重新配置修改: 在开始菜单中找到: 然后重复第…