消息队列——RabbitMQ(一)

news2024/11/16 15:57:28

MQ的相关概念

什么事mq

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游「逻辑解耦 + 物理解耦」的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。

为什么要用mq

1。流量消峰

举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分 散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。

2.应用解耦

以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性。

mq的分类

ActiveMQ

优点:单机吞吐量万级,时效性 ms 级,可用性高,基于主从架构实现高可用性,消息可靠性较 低的概率丢失数据

缺点:官方社区现在对 ActiveMQ 5.x 维护越来越少,高吞吐量场景较少使用

kafka

大数据的杀手锏,谈到大数据领域内的消息传输,则绕不开 Kafka,这款为大数据而生的消息中间件,以其百万级 TPS 的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用。目前已经被 LinkedIn,Uber,Twitter,Netflix 等大公司所采纳。

优点: 性能卓越,单机写入 TPS 约在百万条/秒,最大的优点,就是吞吐量高。时效性 ms 级可用性非常高,kafka 是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用,消费者采用 Pull 方式获取消息,消息有序,通过控制能够保证所有消息被消费且仅被消费一次;有优秀的第三方Kafka Web 管理界面 Kafka-Manager;在日志领域比较成熟,被多家公司和多个开源项目使用;功能支持:功能 较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

缺点:Kafka 单机超过 64 个队列/分区,Load 会发生明显的飙高现象,队列越多,load 越高,发送消息响应时间变长,使用短轮询方式,实时性取决于轮询间隔时间,消费失败不支持重试;支持消息顺序,但是一台代理宕机后,就会产生消息乱序,社区更新较慢

RocketMQ

RocketMQ 出自阿里巴巴的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进。被阿里巴巴广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场景。

优点:单机吞吐量十万级,可用性非常高,分布式架构,消息可以做到 0 丢失,MQ 功能较为完善,还是分布式的,扩展性好,支持 10 亿级别的消息堆积,不会因为堆积导致性能下降,源码是 java 我们可以自己阅读源码,定制自己公司的 MQ

缺点:支持的客户端语言不多,目前是 java 及 c++,其中 c++ 不成熟;社区活跃度一般,没有在 MQ 核心中去实现 JMS 等接口,有些系统要迁移需要修改大量代码

RabbitMQ

2007 年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。

优点:由于 erlang 语言的高并发特性,性能较好;吞吐量到万级,MQ 功能比较完备,健壮、稳定、易用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX 文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高

缺点:商业版需要收费,学习成本较高

MQ的选择

  • kafka

    Kafka 主要特点是基于 Pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,适合产生大量数据的互联网服务的数据收集业务。大型公司建议可以选用,如果有日志采集功能,肯定是首选 kafka 了。

  • RocketMQ

    天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。RoketMQ 在稳定性上可能更值得信赖,这些业务场景在阿里双 11 已经经历了多次考验,如果你的业务有上述并发场景,建议可以选择 RocketMQ。

  • RabbitMQ

    结合 erlang 语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分 方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。

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

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

相关文章

智汇云舟携三大系列产品亮相第68届中国安防工程商集成商大会

8月18日,由中国安全防范产品行业协会指导,永泰传媒主办的中国安防工程商(系统集成商)大会暨第68届中国安防新产品、新技术成果展示在广州盛大开幕。 来自华南各省、市安防协(学)会及全国安防工程商、系统集…

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…

C++系列-浅拷贝和深拷贝

浅拷贝和深拷贝 浅拷贝深拷贝 如果属性有在堆区开辟内存的,一定要自己提供拷贝构造函数,进行深拷贝,以免堆区内存重复释放。 浅拷贝 浅拷贝会带来的问题是堆区空间重复释放 因为是浅拷贝,在调用第二个对象的析构函数时&#xff0…

React前端开发架构:构建现代响应式用户界面

在当今的Web应用开发中,React已经成为最受欢迎的前端框架之一。它的出色性能、灵活性和组件化开发模式,使得它成为构建现代响应式用户界面的理想选择。在这篇文章中,我们将探讨React前端开发架构的核心概念和最佳实践,以帮助您构建…

Googel Earth Engine 配置Python 环境

1. 安装并配置python环境 此处不再赘述 2. 安装 earthengine-api pip install earthengine-api C:\Users\xixi>pip install earthengine-api Collecting earthengine-apiUsing cached earthengine_api-0.1.363-py3-none-any.whl Requirement already satisfied: google-c…

验证评估守护关基安全 赛宁数字孪生靶场创新实践

​​近日,由赛宁网安主办,ISC互联网安全大会组委会协办的第十一届互联网安全大会(ISC 2023)安全运营实践论坛圆满结束。赛宁网安产品总监史崯出席并作出主题演讲:《基于数字孪生靶场如何开展验证评估》,同时…

Tinderbox 8 for mac介绍安装

Tinderbox 8是一款适用于Mac系统的可视化个人笔记工具,可以帮助您以地图形式存储笔记,生成时间轴,并在完成后将它们作为HTML文件共享。现在Tinderbox可以编写脚本,让Tinderbox与您的所有其他工具更紧密地协作 笔记工具 Tinderbox存…

Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端

一: 使用yum安装的好处是较为方便|环境变量自动配置完成。 1.1: 执行下面的命令,检查是否已安装了jdk # 查看当前是否安装了JDK, [rootwww ~]# rpm -qa |grep java [rootwww ~]# rpm -qa |grep jdk [rootwww ~]# rpm -qa |grep gcj [rootwww ~]# rpm -qa | grep -…

【AWS】创建IAM用户;无法登录IAM用户怎么办?错误提示:您的身份验证信息错误,请重试(已解决)

目录 0.背景问题分析 1.解决步骤 0.背景问题分析 windows 11 ,64位 我的问题情景: 首先我创建了aws的账户,并且可以用ROOT用户登录,但是在登录时选择IAM用户,输入ROOT的名字和密码,就会提示【您的身份验证…

安科瑞微机保护装置、智能操控及无线测温产品等电力监控解决方案在山东凯瑞英医药中间体产业链项目的应用

安科瑞 华楠 摘 要:在变电站电力系统中,输电线路是最重要的部分,因此,对输电线路的保护对于整个电力系统的稳定运行有非常重要的意义。继电保护装置是一种反映电力系统故障和不正常运行状态,并且作用于断路器跳闸和发出告警信号的设备,其启到保证电力系…

【openfeign】OpenFeign的使用、GET请求和POST请求

RPC全称是Remote Procedure Call,即远程过程调用,其对应的是我们的本地调用。 RPC的目的是:让我们调用远程方法像调用本地方法一样。 //本地调用 R result orderService.findOrderByUserId(id); //RPC远程调用 orderService为代理对象 R …

蓝牙Mesh设备配网过程及抓包分析

配网过程 说明Mesh消息类型配网过程 信标阶段(Beaconing)Unprovisioned Device beaconLink Open/Link ACK/Link CloseLink OpenLink ACKLink Close 邀请阶段(Invitation)Provisioning InviteProvisioning Capabilities 交换公钥阶段(Exchanging public keys)Provisioning Start…

Oracle数据库经纬度坐标查询优化与结果错误原因分析、SQL中WKT超长文本字符串处理

文章目录 一、Oracle几何空间数据对象和其他数据库的差异二、Oracle查询一个经纬度坐标是否在边界内部2.1 查询条件2.2 查询结果错误,似乎是仅做了MBR匹配2.3 错误原因2.4 解决办法 三、SQL中WKT超长文本在Oracle中如何编写3.1 Oracle中执行含超长文本的SQL报错3.2 …

健身耳机哪个牌子好?推荐几款最适合健身运动用的耳机牌子

对于健身爱好者来说,选择一款适合健身运动的耳机是至关重要的,无论你是跑步、举重还是瑜伽,有适合自己的耳机戴着听歌,能够让你更加投入、更加享受健身的过程。可现在如今的耳机品牌琳琅满目,在选择上自然是要花上不少…

搭建Everything+cpolar在线资料库,实现随时随地访问

Everythingcpolar搭建在线资料库,实现随时随地访问 文章目录 Everythingcpolar搭建在线资料库,实现随时随地访问前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前…

山西电力市场日前价格预测【2023-08-22】

日前价格预测 预测明日(2023-08-22)山西电力市场全天平均日前电价为313.08元/MWh。其中,最高日前电价为354.58元/MWh,预计出现在18: 45。最低日前电价为271.10元/MWh,预计出现在12: 30。 价差方向预测 1: 实…

CrossOver2023虚拟机工具最新版本功能介绍

想要在Mac OS中运行Windows程序,除了使用虚拟机外,使用CrossOver在Mac OS系统中运行Windows程序是非常不错的选择。CrossOver基于Wine技术,可以在Mac OS上运行许多Windows应用程序,而无需安装整个Windows操作系统。 本次发布的Cr…

Paraverse平行云入选启元计划元宇宙TOP20榜单

近日,2023全球数字经济大会互联网3.0峰会上,由中关村大数据产业联盟、中国科协科技传播中心、北京信息化协会共同发起的启元计划发布其成果,同时公布启元计划TOP20以及TOP50企业入选名单。凭借技术与生态优势,「Paraverse平行云」…

docker 05(dockerfile)

一、docker镜像原理 镜像可以复用 二、容器转镜像 将容器保存为镜像[参考] docker commit -a -m 现有容器ID 保存后的名称:版本号 -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :…

常用字符串匹配算法

一、BF匹配 BF算法中的BF是Brute Force的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。 BF算法的时间复杂度很高,是O(nm),但在实际的开发中,它却是一个比较常用的字符串匹配算法。 第一,实际的软件开发中…