并发编程之削峰填谷

在高并发场景下,系统需要应对流量激增带来的压力,如秒杀活动。通过引入削峰填谷策略,利用消息队列(如RabbitMQ)平滑请求,避免直接冲击数据库,确保系统稳定。本文介绍了削峰填谷的概念,并提供了RabbitMQ的生产者和消费者示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在系统的某个阶段,并发访问数(流量)会急剧膨胀,在瞬时时间内(1秒或数秒),达到一个临界点,许多系统往往在这个阶段奔溃而失去响应,比如商家促销活动进行秒杀,或618,双11等等。系统在其他时间业务压力往往不大。要怎么解决这种临界压力呢,那就要进行流量的削峰填谷了

什么是削峰填谷

百度百科的解析是

削峰填谷(Peak cut)是调整用电负荷的一种措施。根据不同用户的用电规律,合理地、有计划地安排和组织各类用户的用电时间。以降低负荷高峰,填补负荷低谷。减小电网负荷峰谷差,使发电、用电趋于平衡

意思是错开用户用电时段,当然对我们系统直接这样干肯定不适合的,总不能说你明天再下单吧。

解决方案

那怎么样即让用户买到商品,又不致于大量请求直接兑到数据造成数据库奔溃。。需要系统进行如下改造

改造之前

在这里插入图片描述改造之后

在这里插入图片描述很明显,改造之后的系统架构加入了消息队列MQ,这里可以试ActiveMQ,RabbitMQ,RcoketMQ, Kafka等任何一种,根据自己业务进行技术选型。这样充分发挥了消息中间件处理速度快特点解决并发问题。

示例

下面列举一个RabbmitMQ生产者和消费者代码

  1. 添加依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
	<version>1.5.2.RELEASE</version>
</dependency>
  1. 生产者
package com.rabbitMQ.pro;  

import com.rabbitmq.client.ConnectionFactory;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.Channel;  

public class Producer {
   
     

    private final static Stri
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值