消息队列(Message Queue,简称 MQ)是构建分布式互联网应用的基础设施,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案。MQ 产品生态丰富,多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖金融保险、(新)零售、物联网、移动互联网、传媒泛娱乐、教育、物流、能源、交通等行业。本文对现在主流消息队列做一个总结。消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能。下面举例说明在实际应用中消息队列是如何使用的。

一、消息队列应用场景

1、异步处理

以用户注册,并且需要注册邮件和短信为例。用户注册后,需要发送注册邮件和注册短信。传统的做法有两种:串行和并行方式。如下图所示:

1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。

2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000ms/150ms),并行方式处理的请求量是10次(1000ms/100ms)

引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下:

按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。

因此架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍。

想要了解跟多关于java培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。

消息队列应用场景异步处理_java培训相关推荐

  1. 用户请求队列化_爬虫架构消息队列应用场景及ActiveMQ、RabbitMQ、RocketMQKafka

    前言:在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结. 消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能. 下面举例说 ...

  2. 深入理解消息队列(场景,对比,原理和设计思想)

    导语 | 消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词.对于后端工程师而言,更是日常开发中必备的一项技能.随着大数据时代的到来,apache旗下的Kafka一度成为消 ...

  3. 【转】消息队列应用场景

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件. 目前在生产环境,使 ...

  4. python中队列的应用用场景_消息队列应用场景

    原文http://blog.csdn.net/konglongaa/article/details/52208273 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消 ...

  5. kafka消息队列使用场景

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...

  6. MQ消息队列使用场景

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...

  7. 面试问题:消息队列使用场景

    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,K ...

  8. 深入理解分布式技术 - 消息队列使用场景

    文章目录 概述 What's MQ ? 应用场景 系统解耦 异步处理 缓冲请求 数据分发 常见的消息队列 Apache RocketMQ Apache Kafka RabbitMQ 其他 如何选择MQ ...

  9. 消息队列 应用场景 解析

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 另外腾讯云-云社区还有一文不允许转载,但内容挺好的:https://cloud.tencent.co ...

最新文章

  1. Autocomplete 自动补全(Webform实战篇)
  2. Android Prefence 总结
  3. 计算机的双一流学校,分数不够上双一流大学计算机专业,上这些大学也不错,实力非常强...
  4. linux下搭建FTP服务器
  5. Java案例:编译器生成桥方法
  6. pytorch_GPU安装
  7. (1)了解cocostudio基础
  8. ARM芯片介绍(转贴)
  9. 我的世界java作弊怎么开_我的世界怎么开作弊?如何启用作弊模式?
  10. Dev,SIT,UAT, Staging, Prod,DR环境分别是意思?
  11. 如何关闭eslint相关规则
  12. 数据库 蚂蚁_华东师范大学与蚂蚁集团OceanBase成立联合实验室,助推自研数据库创新发展...
  13. Cisco nat inside接口,outside接口,nvi接口的区别
  14. Laravel验证器的使用
  15. Orz 终于有了自己的博客地址
  16. 大模型多模态Chatgpt+自动驾驶控制器设计方案
  17. 「操作系统」深入理解死锁(什么是死锁?死锁形成条件?如何避免死锁?如何排查死锁?)
  18. 前端开发的辛酸史(2)之织梦教程
  19. Web安全 -- 信息收集(上)
  20. 云时代,有必要了解的华为云计算解决方案

热门文章

  1. H5唤起手机电话功能
  2. 涉密计算机及网络保密管理制度,威海市国家保密局 保密制度 计算机及网络保密管理制度...
  3. {resCode:111111,resText:FAILURE}
  4. 理解计算机桌面的含义,桌面的新含义是什么意思
  5. [Android 4.4.2] 泛泰A850 Mokee4.4.2 20140509 RC2.0 by syhost
  6. 气象站:处暑至热未止,从事不同行业的人们应该如何预知天气变化
  7. 音频工具 Adobe Audition
  8. ssh mysql jsp码头船只出行及配套货柜码放管理系统的设计与实现+论文+开题报告+任务书
  9. MACos下面brew install 速度慢
  10. gamit10.71解算教程(入门级别,仅供参考)