IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Go秒杀系统——RabbitMQ入门 -> 正文阅读

[大数据]Go秒杀系统——RabbitMQ入门


一、消息队列的三大功能


1.流量削峰

典型的就是电商场景中的订单超量。比如订单系统只能承受1万/秒的并发量,在搞活动时进来了2万/秒的单量,那么订单系统就宕机了。
没有MQ时可以采取限制下单,订单量达到一万后限制用户下单,很明显这样体验极差。
若使用MQ作为缓冲则可以取消这个限制,它将一秒内处理不完的订单分散到更长的一段时间去处理,这样虽然用户可能得等一段时间才能获得下单成功的反馈,但比完全下不了单体验好。

2.应用解耦

仍以电商场景中的用户下单为例,一个完整的下单流程涉及订单系统、支付系统、库存系统、物流系统等。
假如这几个子模块是相互紧密耦合的,那么任意一个模块出现bug将会牵一发而动全身,下单操作就无法完成。
加入MQ后就不会有这种情况,假如物流系统发生故障,可以做一个现场保护,将待处理的缓存在MQ中,等物流系统修复后再继续处理缓存的内容。在用户感知层面,他的下单操作已经正常完成。当物流系统恢复后再继续处理订单即可,下单用户无法感知到物流系统的故障,提升了用户体验。

3.优雅的异步处理

这里需要再明确一下异步的概念,通俗地讲,就是发送一个请求,不等待返回值,随时可以再发送下一个请求
假如A请求B,B需要很长时间处理,但A需要知道B什么时候处理好。不采用MQ时有两种不优雅的处理方式,一种是A隔一段时间去查询一下B是否处理好;另一种是A提供一个callback接口,B处理完后调用A的这个接口通知A(这样就使A与B间的耦合性提高了)。
若加入MQ,那么A只需监听MQ里是否有B处理完成的消息,B只需处理完成后给MQ发一条已完成的消息。这样减少了API的开发,降低了耦合性。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:36:52  更:2021-09-04 17:37:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:06:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码