大型网站架构系列:分布式消息队列(一)
消息队列概述消息队列中间件是分布式系统中重要的组件主要解决应用耦合异步消息流量削锋等问题。实现高性能高可用可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境使用较多的消息队列有ActiveMQRabbitMQZeroMQKafkaMetaMQRocketMQ等。二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理应用解耦流量削锋和消息通讯四个场景。2.1异步处理场景说明用户注册后需要发注册邮件和注册短信。传统的做法有两种1.串行的方式2.并行方式。1串行方式将注册信息写入数据库成功后发送注册邮件再发送注册短信。以上三个任务全部完成后返回给客户端。架构KKQ466097527欢迎加入2并行方式将注册信息写入数据库成功后发送注册邮件的同时发送注册短信。以上三个任务完成后返回给客户端。与串行的差别是并行的方式可以提高处理的时间。假设三个业务节点每个使用50毫秒钟不考虑网络等其他开销则串行方式的时间是150毫秒并行的时间可能是100毫秒。因为CPU在单位时间内处理的请求数是一定的假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次1000/150。并行方式处理的请求量是10次1000/100。小结如以上案例描述传统的方式系统的性能并发量吞吐量响应时间会有瓶颈。如何解决这个问题呢引入消息队列将不是必须的业务逻辑异步处理。改造后的架构如下按照以上约定用户的响应时间相当于是注册信息写入数据库的时间也就是50毫秒。注册邮件发送短信写入消息队列后直接返回因此写入消息队列的速度很快基本可以忽略因此用户的响应时间可能是50毫秒。因此架构改变后系统的吞吐量提高到每秒20 QPS。比串行提高了3倍比并行提高了两倍。2.2应用解耦场景说明用户下单后订单系统需要通知库存系统。传统的做法是订单系统调用库存系统的接口。如下图架构KKQ466097527欢迎加入传统模式的缺点1 假如库存系统无法访问则订单减库存将失败从而导致订单失败2 订单系统与库存系统耦合如何解决以上问题呢引入应用消息队列后的方案如下图订单系统用户下单后订单系统完成持久化处理将消息写入消息队列返回用户订单下单成功。库存系统订阅下单的消息采用拉/推的方式获取下单信息库存系统根据下单信息进行库存操作。假如在下单时库存系统不能正常使用。也不影响正常下单因为下单后订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。2.3流量削锋流量削锋也是消息队列中的常用场景一般在秒杀或团抢活动中使用广泛。应用场景秒杀活动一般会因为流量过大导致流量暴增应用挂掉。为解决这个问题一般需要在应用前端加入消息队列。可以控制活动的人数可以缓解短时间内高流量压垮应用用户的请求服务器接收后首先写入消息队列。假如消息队列长度超过最大数量则直接抛弃用户请求或跳转到错误页面秒杀业务根据消息队列中的请求信息再做后续处理。2.4日志处理日志处理是指将消息队列用在日志处理中比如Kafka的应用解决大量日志传输的问题。架构简化如下架构KKQ466097527欢迎加入日志采集客户端负责日志数据采集定时写受写入Kafka队列Kafka消息队列负责日志数据的接收存储和转发日志处理应用订阅并消费kafka队列中的日志数据以下是新浪kafka日志处理应用案例转自http://cloud.51cto.com/art/201507/484338.htm(1)Kafka接收用户日志的消息队列。(2)Logstash做日志解析统一成JSON输出给Elasticsearch。(3)Elasticsearch实时日志分析服务的核心技术一个schemaless实时的数据存储服务通过index组织数据兼具强大的搜索和统计功能。(4)Kibana基于Elasticsearch的数据可视化组件超强的数据可视化能力是众多公司选择ELK stack的重要原因。2.5消息通讯消息通讯是指消息队列一般都内置了高效的通信机制因此也可以用在纯的消息通讯。比如实现点对点消息队列或者聊天室等。点对点通讯客户端A和客户端B使用同一队列进行消息通讯。聊天室通讯客户端A客户端B客户端N订阅同一主题进行消息发布和接收。实现类似聊天室效果。以上实际是消息队列的两种消息模式点对点或发布订阅模式。模型为示意图供参考。三、消息中间件示例3.1电商系统消息队列采用高可用可持久化的消息中间件。比如Active MQRabbit MQRocket Mq。1应用将主干逻辑处理完成后写入消息队列。消息发送是否成功可以开启消息的确认模式。消息队列返回消息接收成功状态后应用再返回这样保障消息的完整性2扩展流程发短信配送处理订阅队列消息。采用推或拉的方式获取消息并处理。

相关新闻

分组气泡图(Packedbubble)实战:全球车企市值分层聚合可视化

分组气泡图(Packedbubble)实战:全球车企市值分层聚合可视化

本车企市值聚合气泡案例充分体现 Highcharts 专业气泡可视化能力&#xff0c;解决传统散点气泡布局混乱、多分类无法自动分区的痛点。完整可预览修复 HTML<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><met…

2026/7/3 0:13:42阅读更多 →
风控安全产品系统设计的思考与实践

风控安全产品系统设计的思考与实践

本篇文章会从系统架构设计的角度&#xff0c;分享在对业务安全风控相关基础安全产品进行系统设计时遇到的问题难点及其解决方案。 内容包括三部分&#xff1a;&#xff08;1&#xff09;风控业务架构&#xff1b;&#xff08;2&#xff09;基础安全产品的职责&#xff1b;&…

2026/7/3 0:13:42阅读更多 →
我的小树林

我的小树林

如果有非技术人员问你&#xff0c;HTML5是什么&#xff0c;你会怎么回答&#xff1f;新的HTML规范。。。给浏览器提供了牛逼能力&#xff0c;干以前不能干的事。。。&#xff08;确切地说应该是给浏览器规定了许多新的接口标准&#xff0c;要求浏览器实现牛逼的功能。。。 这里…

2026/7/3 0:13:42阅读更多 →
Flink DataStream API vs Flink SQL:核心异同对比

Flink DataStream API vs Flink SQL:核心异同对比

一、编译链路对比二、多维度对比维度DataStream APIFlink SQL抽象层次命令式&#xff08;HOW&#xff1a;告诉引擎怎么做&#xff09;声明式&#xff08;WHAT&#xff1a;告诉引擎做什么&#xff09;优化空间用户手动优化逻辑优化器自动选择最优策略前端编译无&#xff08;直接…

2026/7/3 1:38:47阅读更多 →
FP32近似乘法器在CNN中的优化设计与应用

FP32近似乘法器在CNN中的优化设计与应用

1. 项目概述&#xff1a;FP32近似乘法器在CNN中的创新应用在计算机视觉和深度学习领域&#xff0c;卷积神经网络(CNN)已经成为图像识别、目标检测等任务的基础架构。然而&#xff0c;CNN推理过程中需要执行海量的乘加运算(MAC)&#xff0c;其中FP32浮点乘法器作为核心计算单元&…

2026/7/3 1:38:47阅读更多 →
YOLOv10模型改进-Backbone改进-第56篇:YOLOv10改进策略【Backbone】| ConvNeXt Backbone替换

YOLOv10模型改进-Backbone改进-第56篇:YOLOv10改进策略【Backbone】| ConvNeXt Backbone替换

一、本文介绍 本文记录的是利用ConvNeXt作为Backbone改进YOLOv10的特征提取部分。ConvNeXt通过将Transformer的设计理念引入卷积神经网络,实现优异的性能。 二、ConvNeXt模块介绍 2.1 设计出发点 将Transformer的深度可分离卷积、LayerNorm、GELU激活函数等设计理念引入CN…

2026/7/3 1:38:47阅读更多 →
密码学博客:AES-CBC 比特翻转(Bit Flipping)攻击原理、实战与防御

密码学博客:AES-CBC 比特翻转(Bit Flipping)攻击原理、实战与防御

一、前言AES-CBC 是 Web、CTF 中最常见的分组加密模式之一&#xff0c;相比 ECB 解决了明文重复密文重复的缺陷&#xff0c;但CBC 仅提供机密性&#xff0c;不自带完整性校验。比特翻转攻击正是利用 CBC 解密的异或链式特性&#xff0c;在不知道密钥的前提下篡改解密后的明文&a…

2026/7/3 1:38:47阅读更多 →
选对取代度提升包封率!近红外羧基染料 DiR-COOH 全解析

选对取代度提升包封率!近红外羧基染料 DiR-COOH 全解析

羧基化 DiR&#xff08;DiR-COOH&#xff09;属于可共价修饰型近红外荧光衍生物&#xff0c;分子结构由三大功能单元组合而成&#xff1a;负责输出近红外荧光信号的 DiR 发色母核、保障脂相兼容的长烷基疏水链&#xff0c;以及可发生偶联反应的末端羧基活性位点。 该分子兼具亲…

2026/7/3 1:38:47阅读更多 →
技术选型个非常严谨的过

技术选型个非常严谨的过

技术选型常常是一个非常严谨的过程。由于一个项目通常是由数十位甚至上百位开发人员协同开发的&#xff0c;因此一个精准的技术选型常常能够大幅提高整个项目的开发效率。在尝试为某一类需求设计解决方案时&#xff0c;我们常常会有很多种可以选择的技术。为了能够精准地选择一…

2026/7/3 1:33:47阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中&#xff0c;LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头&#xff0c;其核心是一颗高性能CMOS图像传感器&#xff0c;配合专用解码芯片&#xff0c;能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”&#xff0c;而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号&#xff0c;但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后&#xff0c;…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”&#xff0c;而是一份实操者手记&#xff1a;当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书&#xff0c;也不是学术会议的议程表&#xff0c;而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →