为什么要使用RabbmintMQ?

简介: 因为消息服务的的通信协议和规则很随意而且是异步的,所以其实可以做很多很多事。

第一,你的业务需要用到消息队列

第二,消息需要持久化,重启服务能继续执行未完成的任务

第三,可能有大量的消息需要处理, rabbitmq 的性能能够满足



因为消息服务的的通信协议和规则很随意而且是异步的,所以其实可以做很多很多事。

例如:

注册用户时候,发送激活邮件。

监控应用中抛出的异常,邮件通知管理员。也就是增加监控功能,且一个消息服务可以监控无数个应用。

异构型架构系统间的各服务通信,因为消息服务于平台或者语言无关,典型的应用在 SOA 分布式体系的各个服务之间,可以做到,我依赖你,但是我可以不在乎你是否在运行,的关系。


例如,微信的抢红包,淘宝的订单,铁道部的购票等,如果不丢给队列排队处理,突然性的高并发会有让应用或者数据库瘫痪的风险。


其实很简单,一种应用是:因为很多任务是需要花费大量时间的,比如你设计一套系统,要分别发送 100 封邮件给不同的人。在用户点击发送按钮之后,如果在完成这 100 封邮件后才反馈给用户发送完成,那用户体验简直崩溃。因此此时你将这个任务添加到 rabbitMQ 队列里,前台立即返回给用户说成功,后台用 python 慢慢发送就好。


为什么会需要消息队列(MQ)?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。  


目录
相关文章
|
消息中间件 存储 负载均衡
为什么会选择使用RabbitMQ ? 有什么好处 ?
选择使用RabbitMQ的原因有很多,以下是一些常见的好处和详细介绍
515 0
|
数据库
LeetCode(数据库)- 每位经理的下属员工数量
LeetCode(数据库)- 每位经理的下属员工数量
98 0
彻底学会使用epoll(三)——ET的读操作实例分析
首先看程序一,这个程序想要实现的功能是当用户从控制台有任何输入操作时,输出”hello world!”。 l 程序一    点击(此处)折叠或打开 #include unistd.
1227 0
|
12天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201890 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
4天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
|
1天前
|
供应链 监控 安全
|
3天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。