消息系统的4大使用场景

简介: 消息系统的4大使用场景

为什么要使用消息系统

这是最开始的一种架构:

  1. 大量的请求到达Web网站时,我们可以通过Redis缓存减少数据库对数据的查询压力。但是对于大量的增、删、改等请求,Redis无法完成,所以需要一个专门的消息系统来“缓存”这些请求。
  2. 一些非法操作会同时发送海量的查询请求,这时如果Redis中没有对应的数据,则这些请求就会被转嫁到Mysql,Mysql会瞬间承受大量的查询压力,来不及将对应的数据发送到Redis中,直接导致数据库宕机。所以也需要一个消息系统来“缓存”这些请求。

所以我们就使用下面的架构缓解数据库压力

备注:Redis可以做消息系统,但是无法适应大量的消息存储,一旦内存不足,直接完蛋。

消息系统的应用场景

  1. 解耦合

如上图所示,如果没有消息系统的情况下,,Web网站会直接调用手机认证和邮箱认证的接口,如果认证系统调用方式或者接口发生变更,Web网站的相关代码也需要更改,并且重新打包编译部署启动,这段时间网站无法使用,是无法容忍的问题。


因此我们使用消息系统,采取下面的方式:

如上图使用了消息系统可以做到web服务和其他的服务之间的解耦合,如三方的接口/调用方式做了更改, 我们不需要修改web服务的代码,也不需要重新启动web服务,只需要修改消息系统中调用三方服务的代码即可。

  1. 异步处理

假设一个场景:

当我们注册账号时,需要获取短信验证码或者邮箱认证,我们获取到发送认证成功后才会返回发送成功信息,在这之前,我们需要耗费大量时间等待我们的操作是否成功,严重影响用户体验。


因此我们采用消息系统的异步处理的特性解决此问题

异步处理在会先返回结果后再执行发送信息,避免了用户长时间等待操作是否成功的通知。

  1. 流量削峰

如上图,当有了消息系统,可以短时间拦截大量的请求,形成消息队列,交给Mysql慢慢的执行(可以理解为 大坝:当洪水来临,拦截下来,慢慢放流)

  1. 消息通信

客户端A 和 B 进行通信时,必须双方同时在线才能通信,否则不行。

但是引入消息系统后,我们可以将A的“发送信息”存入到消息系统中,当B上线后再将存入消息系统的“发送信息”发送给他。公众号群发的消息也是用此实现的。

目录
相关文章
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
1062 0
|
Web App开发 开发者
[爆]小程序内可直接打开网页了!附开发文档
昨天微信团队又深夜奉上大新闻:①小程序内可直接打开网页、②小程序可关联500个公众号。为便于开发者灵活配置小程序,小程序现开放内嵌网页能力。(网友评论称这个功能直接把小程序提高n个高度,秒掉手机浏览器。
2036 0
|
6月前
|
人工智能 Linux API
OpenClaw 全场景命令速查手册:阿里云/本地系统部署+大免费模型api配置+完整命令库整理
2026年,OpenClaw(Clawdbot)已成为最主流的开源AI智能体执行框架,凭借轻量化、可扩展、本地优先、多平台接入等特性,成为个人与团队搭建数字助理的首选工具。但在实际使用中,大量用户面临**命令记不住、部署流程复杂、大模型配置失败、服务无法启动、故障不会排查**等问题,严重影响使用效率。
1212 0
|
9月前
|
消息中间件 监控 NoSQL
海量数据下的订单超时取消
本文深入解析海量订单超时取消的分布式调度方案,对比Redis ZSet、延时消息、时间轮等技术优劣,结合大厂实践,提出分层架构与多级延迟策略,兼顾性能、可靠与可扩展性,助力构建高可用订单系统。
661 2
|
6月前
|
人工智能 Linux API
OpenClaw(Clawdbot)简中攻略:阿里云/本地部署+API配置+核心Skill集成及避坑手册
OpenClaw(原Clawdbot)作为开源AI Agent领域的标杆工具,凭借“轻量灵活、功能全面、全平台兼容”的特性,成为个人与团队提升效率的核心选择。但现有教程多分散于不同平台,且缺乏针对中文用户的系统化指南,导致新手常面临“部署难、配置乱、用不精”的问题。
1407 4
|
消息中间件 存储 Java
【微服务】RabbitMQ七种消息收发方式🌱
MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。
1047 0
【微服务】RabbitMQ七种消息收发方式🌱
|
机器学习/深度学习 自然语言处理 语音技术
《攻克LSTM语音识别“语速关”:技术新突破与解决方案》
在语音识别中,LSTM虽具强大序列建模能力,但对不同语速的适应性仍面临挑战。为此,可从数据增强(如语速扰动、多语速语料库)、模型改进(引入注意力机制、双向LSTM、增加深度宽度)、训练策略(分层训练、多任务学习、调整参数)及后处理(语速归一化、语言模型融合)等方面入手,全面提升LSTM对不同语速的适应性和识别性能。
700 7
|
JSON Java 数据格式
详尽分享菜鸟天地对接功能之单点接入分享
详尽分享菜鸟天地对接功能之单点接入分享
995 0
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【8月更文挑战第2天】数据安全至关重要,AES加密作为对称加密的标准之一,因其高效性与灵活性被广泛采用。本文通过实战演示Python中AES的应用,使用pycryptodome库进行安装及加密操作。示例代码展示了生成随机密钥与初始化向量(IV)、对数据进行加密及解密的过程。注意事项包括密钥管理和IV的随机性,以及加密模式的选择。掌握AES加密能有效保护敏感数据,确保信息安全无虞。
731 6
|
移动开发 JavaScript 小程序
uView Notify 消息提示
uView Notify 消息提示
544 0

热门文章

最新文章