架构设计(六):引入消息队列

架构设计,引入,消息,队列 · 浏览次数 : 87

小编点评

**架构设计(六):引入消息队列** **第一部分:生产者(发布者)** * 创建消息,并将其发布到消息队列中。 **第二部分:消费者(订阅者)** * 连接到队列,并执行消息所定义的动作。 **消息队列架构** **流程** 1. 生产者创建消息并将其发布到消息队列中。 2. 消费者连接到队列,并从队列中读取消息。 3. 消息处理程序执行消息定义的任务。 4. 消息处理完成后,消费者将其消费并处理结果。 **优点** * 组件化,可扩展和可靠。 * 异步通信,减少阻塞操作。 * 消息队列可以处理大量请求并实现解耦。 **参考资料** *博客园:架构设计(六):引入消息队列 * CSDN:架构设计(六):引入消息队列消息队列是一个支持持久化的组件,数据存储在内存中,支持异步通信。 * System Design Interview。归纳总结以上内容。

正文

架构设计(六):引入消息队列

作者:Grey

原文地址:

博客园:架构设计(六):引入消息队列

CSDN:架构设计(六):引入消息队列

消息队列是一个支持持久化的组件,数据存储在内存中,支持异步通信。它作为一个缓冲器,分配异步请求。消息队列的基本架构很简单,包含两个部分

第一部分:输入服务,称为生产者/发布者,创建消息,并将其发布到消息队列中。

第二部分:其他服务或服务器,称为消费者/订阅者,连接到队列,并执行消息所定义的动作。

img

消息队列可以实现服务之间的解耦,成为构建可扩展和可靠的应用程序的首选架构。有了消息队列,生产者可以在消费者无法处理消息时将其发布到队列中。即使生产者不可用,消费者也可以从队列中读取消息。

以下示例说明了消息队列的使用方式

假设某个应用是用来处理照片定制,包括剪裁、锐化、模糊等。这些定制任务需要相对长的时间来完成。

应用服务器(生产者)将「照片处理作业」发布到消息队列中。照片处理程序(消费者)从消息队列中接过作业,异步地执行照片定制任务。生产者和消费者可以独立扩展。当队列的规模变大时,会增加更多的消费者实例以减少处理时间。然而,如果队列大部分时间是空的,可以减少生产者的实例数量。

参考资料

System Design Interview

与架构设计(六):引入消息队列相似的内容:

架构设计(六):引入消息队列

架构设计(六):引入消息队列 作者:Grey 原文地址: 博客园:架构设计(六):引入消息队列 CSDN:架构设计(六):引入消息队列 消息队列是一个支持持久化的组件,数据存储在内存中,支持异步通信。它作为一个缓冲器,分配异步请求。消息队列的基本架构很简单,包含两个部分 第一部分:输入服务,称为生产

架构设计(七):日志、监控和自动化

架构设计(七):日志、监控和自动化 作者:Grey 原文地址: 博客园:架构设计(六):日志、监控和自动化 CSDN:架构设计(六):日志、监控和自动化 针对小型网站,日志、监控和自动化支持是很好的做法,但不是必须的。然而,如果网站已经发展到为大型企业服务,日志、监控和自动化工具是必不可少的。 日志

架构设计(一):从单服务器模式到负载均衡设计

# 架构设计(一):从单服务器模式到负载均衡设计 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:架构设计(一):从单服务器模式到负载均衡设计](https://www.cnblogs.com/greyzeng/p/16980532.h

架构设计(二):数据库复制

架构设计(二):数据库复制 作者:Grey 原文地址: 博客园:架构设计(二):数据库复制 CSDN:架构设计(二):数据库复制 在架构设计(一):从单服务器模式到负载均衡设计中提到了数据库类型的选择, 针对大数据量,高可用的场景,数据库复制是一种比较好的方式,其中多个数据库实例之间可以是主/从关系

架构设计(三):引入缓存

架构设计(三):引入缓存 作者:Grey 原文地址: 博客园:架构设计(三):引入缓存 CSDN:架构设计(三):引入缓存 缓存是一个临时存储区域,如果请求的数据获取代价比较高或者数据的访问频率比较高,则会把响应结果存储在内存中,以便更快速地提供后续请求。 每次加载一个新的网页,都要执行一次或多次数

架构设计(四):CDN

架构设计(四):CDN 作者:Grey 原文地址: 博客园:架构设计(四):CDN CSDN:架构设计(四):CDN CDN 全称 Content delivery network ,即:内容分发网络。 CDN 是一个地理上分散的服务器网络,主要用于提供静态内容。如:图片、视频、CSS、JavaSc

架构设计(五):有状态服务和无状态服务

架构设计(五):有状态服务和无状态服务 作者:Grey 原文地址: 博客园:架构设计(五):有状态服务和无状态服务 CSDN:架构设计(五):有状态服务和无状态服务 无状态的服务 在横向扩展服务的过程中,将状态(例如用户会话数据)从服务中移出并将会话数据存储在持久性存储介质中,如关系型数据库或 No

架构设计(八):数据库的水平扩展和垂直扩展

架构设计(八):数据库的水平扩展和垂直扩展 作者:Grey 原文地址: 博客园:架构设计(八):数据库的水平扩展和垂直扩展 CSDN:架构设计(八):数据库的水平扩展和垂直扩展 数据库的扩展有两种方法:垂直扩展和水平扩展。 垂直扩展是通过提高现有机器的硬件配置(CPU、硬盘、内存等)来进行扩展。比如

架构设计(九):估算

架构设计(九):估算 作者:Grey 原文地址: 博客园:架构设计(九):估算 CSDN:架构设计(九):估算 估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握 第一个概念:二的幂 尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以

[转帖]Nginx(2):架构设计与工作流程

https://cloud.tencent.com/developer/article/1886166?areaSource=&traceId= 这些天呐,实在是给我看晕了。起因自然还是对 nginx 不是很了解哈。那我是来看什么的?一开始就从细节出发,有点管中窥豹,不得全貌了。 图来自网络 架构设