消息系统的4大使用场景

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 消息系统的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上线后再将存入消息系统的“发送信息”发送给他。公众号群发的消息也是用此实现的。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
消息中间件 监控 中间件
常用的消息队列中间件都有什么?优缺点是什么?如何选择?
常用的消息队列中间件都有什么?优缺点是什么?如何选择?
155 5
|
7月前
|
消息中间件 存储 监控
|
3月前
|
消息中间件 存储 Java
MQ核心作用、解耦、削峰使用场景详解
【11月更文挑战第21天】在如今的高并发互联网应用中,如何确保系统在巨大的流量冲击下还能稳定运行,是每个技术团队都会遇到的挑战。说到这,消息队列(MQ)就是背后的“大功臣”了。无论是异步处理请求、平滑应对流量高峰,还是让各个系统模块相互独立不“拖后腿”,MQ都是不可或缺的帮手。那么,MQ是如何削峰的?或者它是如何让复杂系统解耦的?今天,我们就来聊聊MQ的三大核心功能,看它是如何助力系统高效、稳定运转的。
153 1
|
4月前
|
消息中间件 缓存 大数据
大数据-57 Kafka 高级特性 消息发送相关01-基本流程与原理剖析
大数据-57 Kafka 高级特性 消息发送相关01-基本流程与原理剖析
75 3
|
6月前
|
消息中间件 缓存 Kafka
图解Kafka:架构设计、消息可靠、数据持久、高性能背后的底层原理
【8月更文挑战第15天】在构建高吞吐量和高可靠性的消息系统时,Apache Kafka 成为了众多开发者和企业的首选。其独特的架构设计、消息可靠传输机制、数据持久化策略以及高性能实现方式,使得 Kafka 能够在分布式系统中大放异彩。本文将通过图解的方式,深入解析 Kafka 的这些核心特性,帮助读者更好地理解和应用这一强大的消息中间件。
251 0
|
7月前
|
消息中间件 中间件 数据挖掘
中间件发布订阅实时数据处理
【7月更文挑战第2天】
47 2
|
7月前
|
消息中间件 监控 Java
使用Java实现高性能消息队列系统
使用Java实现高性能消息队列系统
|
9月前
|
消息中间件 NoSQL Kafka
【消息队列】如何做技术选型?
【消息队列】如何做技术选型?
113 1
|
9月前
|
消息中间件 Kafka
消息队列 MQ:构建高效、可扩展的分布式系统
消息队列 MQ:构建高效、可扩展的分布式系统
|
9月前
|
消息中间件 网络协议 Ubuntu
实现高效消息传递:使用RabbitMQ构建可复用的企业级消息系统
RabbitMQ是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。