当前位置: 首页 > news >正文

项目技术栈-解决方案-消息队列

在这里插入图片描述

项目技术栈-解决方案-消息队列

  • 概念
  • 应用场景
    • 1. 异步处理
  • 参考文章
    • 消息队列(Message Queue)

概念

“消息”是在两台计算机间传送的数据单位。
消息可以非常简单,例如只包含文本字符串;
也可以更复杂 ,包括对象等。

队列是一种数据结构,先进先出,保证了顺序性。

生产者:发送消息的一端。用于把消息写入到队列中

消费者:从消息队列中,依次读取每条消息的一端。

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。

实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

应用场景

1. 异步处理

场景说明:
用户注册后,需要发注册邮件和注册短信。传统的做法有两种

1.串行的方式;2.并行方式
(1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端
在这里插入图片描述
(2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间
在这里插入图片描述
假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。

因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100)

引入消息队列,将不是必须的业务逻辑,异步处理。
在这里插入图片描述
按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。

注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。
因此架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍

参考文章

消息队列(Message Queue)

https://www.kancloud.cn/xianyunyehe/php_interview/1163797

http://www.lryc.cn/news/308104.html

相关文章:

  • 【深度优先搜索】【图论】【推荐】332. 重新安排行程
  • DAY9-防病毒AV概述
  • TCP缓存
  • Socket网络编程(一)——网络通信入门基本概念
  • RTCA DO-178C 机载系统和设备认证中的软件注意事项-软件质量保证流程(八)
  • K 个一组翻转链表 力扣
  • Java毕业设计 基于SSM SpringBoot vue购物比价网站
  • Linux按键输入实验-按键功能完善
  • 二分查找讲解
  • 跨区域复制建筑UI输入框脚本迷你世界
  • 取消退出流程控制方法
  • 力扣-跳跃游戏
  • 李沐动手学习深度学习——3.2练习
  • 代码随想录Day20 | Leetcode77 组合
  • Android Duplicate class 排除重复类
  • 【Kubernetes】服务(Service)是什么?有什么用?有哪些类型?
  • 【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)
  • Redis高级特性详解:事务处理、发布订阅、持久化和集群
  • nwjs做自动化测试
  • 【前端素材】推荐优质在线特殊品牌商城电商网页eStore平台模板(附源码)
  • Redis之一: 简介及环境安装搭建
  • 关于电脑一天24小时多少度电电脑的一天用电量计算
  • Unity3D 物理引擎的基本配置详解
  • CSS:弹性盒子Flexible Box布局
  • java常用环境docker安装
  • Code-Audit(代码审计)习题记录6-7
  • go 的使用总结
  • 无线水电表智能化管理系统
  • 发掘效率黑科技:Allure报告助您事半功倍提升测试效能!
  • Spring Web 过滤器使用常见错误(上)