58到家MQ如何快速实现流量削峰填谷

深入剖析MQ(消息队列):解耦、削峰、异步 在了解什么事消息队列之前,我们要先知道同步和异步通讯的区别,我们从以下两方面介绍MQ:同步和异步通讯什么使用MQ。 阅读详情

问:为什么会有本文?

答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要实现什么细节,才能缓冲流量,削峰填谷。

 

问:站点与服务,服务与服务上下游之间,一般如何通讯?

答:有两种常见的方式


一种是“直接调用”,通过RPC框架,上游直接调用下游。


在某些业务场景之下(具体哪些业务场景,见《到底什么时候该使用MQ?》),可以采用“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。

 

问:为什么会有流量冲击?

答:不管采用“直接调用”还是“MQ推送”,都有一个缺点,下游消息接收方无法控制到达自己的流量,如果调用方不限速,很有可能把下游压垮。

 

举个栗子,秒杀业务:

上游发起下单操作

下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)


上游下单业务简单,每秒发起了10000个请求,下游秒杀业务复杂,每秒只能处理2000个请求,很有可能上游不限速的下单,导致下游系统被压垮,引发雪崩。

 

为了避免雪崩,常见的优化方案有两种:

1)业务上游队列缓冲,限速发送

2)业务下游队列缓冲,限速执行

 

不管哪种方案,都会引入业务的复杂性,有“缓冲流量”需求的系统都需要加入类似的机制(具体怎么保证消息可达,见《消息总线能否实现消息必达?》),正所谓“通用痛点统一解决”,需要一个通用的机制解决这个问题。

 

问:如何缓冲流量?

答:明明中间有了MQ,并且MQ有消息落地的机制,为何不能利用MQ来做缓冲呢?显然是可以的。

 

问:MQ怎么改能缓冲流量?

答:由MQ-server推模式,升级为MQ-client拉模式。


MQ-client根据自己的处理能力,每隔一定时间,或者每次拉取若干条消息,实施流控,达到保护自身的效果。并且这是MQ提供的通用功能,无需上下游修改代码。

 

问:如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?

答:下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化,方能够提升整体吞吐量,例如:批量写。

 

结论

1)MQ-client提供拉模式,定时或者批量拉取,可以起到削平流量,下游自我保护的作用(MQ需要做的)

2)要想提升整体吞吐量,需要下游优化,例如批量处理等方式(消息接收方需要做的)


58到家架构优化具备整体性,需要通用服务和业务方一起优化升级。


==【完】==






RocketMQ | 解耦、异步、削峰原理解析 前言 开门见山的说,MQ肯定是有用的,不然这么多人用它干嘛(当然可能有人觉得可以装逼用2333) 不过这次我们要说的RocketMQ可不是美国进口的技术,是阿里巴巴捐赠给apache,让apache孵化用的。 阿里巴巴官方给出的RocketMQ的特点 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 Producer、Consumer、队列都可以分布式。 Producer向... 阅读详情

相关推荐

深入解析DDR5 SDRAM中的CA训练模式(CATM):原理与实现

本文深入解析DDR5 SDRAM中的CA训练模式(CATM),详细探讨其工作原理与实现方法。通过分析JESD79-5标准,揭示CATM在时序校准、信号质量优化和系统稳定性方面的核心价值,并提供硬件设计考量和系统级调试技巧,帮助工程师解决高速内存系统中的信号完整性问题。

weixin_29235923的博客 383

MQ-削峰填谷

MQ-削峰填谷

cyy_j的博客 1948

VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程

关于VSCode上搭建C/C++开发环境的内容,到这里就结束了,这里博主感叹一下,VSCode真的挺强大的,作为一个编辑器,可以通过和编译器链接成为开发环境,将环境配置好的话,在这上面写代码似乎也是个不错的选择。大家有任何疑问,欢迎在评论区中提出,本篇博客有任何问题和错误也欢迎来和博主讨论,真心希望能和大家一起进步。最后,如果本篇博客对你有帮助的话,能不能给博主一个三连啊!

2303_79329831的博客 8万+

实战:RocketMQ削峰,这一篇就够了

文章目录前言rocketmq-spring-boot-starter 用法简介业务案例环境配置添加maven依赖application.yml配置点赞接口PraiseListener:点赞消息消费者上线了但消费效率预估失误如何动态更改消费效率 ?如何使用RocketMQ批量消费 ?附本文相关信息 前言 MQ的主要特点为解耦、异步、削峰,该文章主要记录与分享个人在实际项目中的RocketMQ削峰用法...

z28126308的专栏 7689

WPF的基础设施:XAML基础语法

XAML是WPF的核心标记语言,采用XML语法实现界面与逻辑分离。其基础语法包括:1)控件声明方式(特性语法和属性元素语法);2)x:Name与Name的区别(适用范围和编译行为);3)注释规范与代码折叠技巧;4)实用特性如属性继承、附加属性等。文章还提供了常见错误排查方法,建议通过实践练习掌握XAML开发技巧。全文系统介绍了XAML的核心语法与应用场景,是WPF开发者的基础学习指南。

Hare的博客 1755

Claude Code vs Codex

Claude Code 提供了一个生产就绪(production-ready)的实现,包含良好的错误处理、优雅的关闭逻辑、详细注释和文档,以及内置测试。Claude Code 输出了一个可运行的 Next.js + TypeScript 前端,但错过了一些设计里的黄色主题元素;Codex 则生成自己的版本,没有导出设计中的图片,也没严格遵照设计主题。Codex 完成同样功能,但更简洁直接,文档和注释少一些但功能达标。任务都用同样的提示,使用 TypeScript 实现,并在一天内完成。

weixin_49869937的博客 2385

高并发系统设计十六(消息队列削峰)

在前面章节,我们了解了高并发系统设计的三个目标:性能、可用性和可扩展性,而在提升系统性能方面,我们一直关注的是系统的查询性能。也用了很多的篇幅去讲解数据库的分布式改造,各类缓存的原理和使用技巧。究其原因在于,我们遇到的大部分场景都是读多写少,尤其是在一个系统的初级阶段。 比如说,一个社区的系统初期一定是只有少量的种子用户在生产内容,而大部分的用户都在“围观”别人在说什么。此时,整体的流量比较小,而写流量可能只占整体流量的百分之一,那么即使整体的 QPS 到了 10000 次 / 秒,写请求也只是到了每秒 1

qq_36341209的博客 2926

MQ消息架构设计五(58到家MQ如何快速实现流量削峰填谷)

转载自:https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651960021&idx=1&sn=4bbe275c249a70ab20e36959fc01d4e0&chksm=bd2d07098a5a8e1fd9b505778b551002ab59c35953fa3deaaddc79e3f21bcea5ff48076b4a89&scene=

zenghaolin510824的博客 1309

Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务

因此,当使用外部容器时,如此处的 Tomcat 来部署项目,AbstractAutoServiceRegistration 就不能监听到容器启动事件了,也就不会尝试向服务注册中心注册当前这个微服务,那么注册就失败了,并且也就没有异常信息了。自定义获取获取外部容器端口的方法, 然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个 port 设置到 NacosAutoServiceReigistration 中。在启动类同级目录,复制下面代码即可(不需要修改,直接构建war即可)

ttyy1112的专栏 2519

LIS2DH三轴加速度传感器原理图设计,已量产(加速度传感器)

最近在做一款可穿戴设备原型时,选了 LIS2DH 这款加速度计 —— 比起之前常用的 ADXL345,它在低功耗和稳定性上的优化刚好戳中了可穿戴设备 “续航 + 可靠” 的核心需求。下面结合这次画的原理图,聊聊这个小模块的硬件设计细节。

不脱发的程序猿 388

MQ,如何做到削峰填谷

问:为什么会有本文? 答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要实现什么细节,才能缓冲流量,削峰填谷。 问:站点与服务,服务与服务上下游之间,一般如何通讯? 答:有两种常见的方式 一种是“直接调用”,通过RPC框架,上游直接调用下游。 在某些业务场景之下(具体哪些业...

丶自定义 1万+

FPGA实现的AES加解密算法——Verilog源代码详解

本文将介绍基于FPGA的AES加解密算法的Verilog实现,并提供相应的源代码。根据密钥长度的不同,AES算法分为AES-128、AES-192和AES-256三种模式。对于已知的明文-密钥组合,可以使用在线的AES加解密工具计算出正确的密文,然后将该密文与FPGA加速器的输出进行比较。本文以AES-128算法为例,介绍基于FPGA的AES加解密算法的设计思路和Verilog实现。以上是基于FPGA的AES加解密算法的Verilog实现的相关内容。模块接受输入的明文和密钥,并输出加密后的密文。

HackSquad的博客 1976

170331、58到家MQ如何快速实现流量削峰填谷

问:为什么会有本文? 答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要实现什么细节,才能缓冲流量,削峰填谷。 问:站点与服务,服务与服务上下游之间,一般如何通讯? 答:有两种常见的方式 一种是“直接调用”,通过RPC框架,上游直接调用下游。 在某些业务场景之下(具...

weixin_30455365的博客 279

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

信创 | 信创中间件全览:核心种类与关键组件!

信创产业中的中间件主要包括基础中间件和广义中间件两大类。基础中间件包括交易中间件、消息中间件、应用服务器中间件等,而广义中间件则涵盖了更多种类的中间件产品,以适应不断变化的技术需求。

dream317 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

图文详解:电商大促期间,如何设计“秒杀“架构支撑百万级并发请求?

即使有 TCC 和事务消息,仍可能因极端场景出现 「Redis 库存与 MySQL 库存不一致」 的情况。因此需要一套实时对账任务,修正数据偏差:每分钟触发一次对账任务,对比 Redis 与 MySQL 的库存差异:若差值在合理范围(如±1),视为正常延迟,无需处理;若差值超过10,则以 MySQL 数据为准修复 Redis 库存,确保双端数据最终一致。

jike007gt的博客 1065

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

58到家消息系统设计与开发实践

我今天的演讲主要包括三个部分:消息平台产生的背景,它的整体架构和系统重点,以及我们遇到并解决了哪些问题。   消息平台产生的背景 消息平台产生的背景是基于58核心的业务——58速运,58速运的业务是做最便捷的同城的货运。之前一个速运系统出现问题时,GPS上报跟滴滴的业务比较相近,区别在于滴滴是运人,我们这边是运货。这时存在着一些问题,由于GPS上报比较频繁,系统压力比较大。此外,

java的平凡之路 1225

MQ消息队列中间件:

MQ消息队列中间件

m0_52765511的博客 507

rockemq 发送延迟消息_58分布式消息队列WMB设计与实践

背景为了能够承载58业务的快速扩展及海量的用户访问,分布式系统已经成为公司一种主流架构设计。而消息队列是大型分布式系统中不可或缺的通信桥梁,在分布式系统解耦、异步通信、事件通知、流量削峰等业务场景中起着重要作用。现常见的开源消息队列有Kafka、RocketMQ、RabbitMQ等,都有着不同的使用场景和特点。RabbitMQ采用erlang 语言开发,具有较高的可靠性,但是性能较差;kafka突...

weixin_29348211的博客 379

高并发秒杀系统架构设计与优化实践

高并发系统设计是互联网架构的核心挑战之一,尤其在电商秒杀场景中体现得尤为突出。秒杀系统本质上是通过分层削峰、异步处理等机制解决瞬时流量洪峰问题,其关键技术包括分布式锁、消息队列和熔断降级等。从技术原理看,通过Redis实现原子操作和预扣减库存,可以将库存扣减的TPS从2000提升到10万+,同时结合消息队列实现异步订单创建,有效降低数据库压力。典型应用场景中,采用热点数据隔离和本地缓存策略,能够解决99%请求集中在3%商品上的性能瓶颈。本文通过千万级QPS实战案例,详细解析了如何通过分层过滤、库存预热等方案

weixin_30527323的博客 339

架构系列---架构师之路17年精选80篇

2017精选索引,入选规则为: 截止至2017年12月28日文章 截止到发文,阅读1W+ 【架构必备】 《互联网架构如何实现“高并发”》4W+ 《TCP接入层的负载均衡、高可用、扩展性架构设计》2.2W+ 《配置中心架构设计演进》1.7W+ 《跨公网调用的大坑与架构优化》1.4W+ 《DNS在架构设计中的巧用》1.9W+ 《消息如何在网络上安全传输》1.2W+...

FeelTouch Labs 1389

消息推送平台

消息推送平台 前言 本文内容整理自58到家平台部负责人任桃术的演讲内容。主要内容包括三部分:消息平台产生的背景、它的整体架构和系统重点以及遇到并解决了哪些问题。 消息推送平台产生的背景 消息平台产生的背景是基于58核心的业务——58速运,58速运的业务是做最便捷的同城的货运。 之前一个速运系统出现问题时,GPS上报跟滴滴的业务比较相近,区别在于滴滴是运人,我们这边是运货。这时存在...

zhangbijun1230的专栏 1170
上一篇: 到底什么时候该使用MQ?
下一篇: 用uid分库,uname上的查询怎么办?
涛濤
博客等级 码龄12年 136粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值