并发编程之削峰填谷

article/2025/9/15 19:32:52

背景

在系统的某个阶段,并发访问数(流量)会急剧膨胀,在瞬时时间内(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 String QUEUE_NAME = "hello2";// 队列名不能重复 之前已有就会失败  public static void main(String[] argv) throws java.io.IOException {  /* 使用工厂类建立Connection和Channel,并且设置参数 */  ConnectionFactory factory = new ConnectionFactory();  factory.setHost("192.168.10.111");// MQ的IP  factory.setPort(5672);// MQ端口  factory.setUsername("asdf");// MQ用户名  factory.setPassword("123456");// MQ密码  Connection connection = factory.newConnection();  Channel channel = connection.createChannel();  /* 创建消息队列,并且发送消息 */  channel.queueDeclare(QUEUE_NAME, false, false, false, null);  String message = "消息2";  channel.basicPublish("", QUEUE_NAME, null, message.getBytes());  System.out.println("生产了个'" + message + "'");  /* 关闭连接 */  channel.close();  connection.close();  }  } 
  1. 消费者
package com.rabbitMQ.pro;  import com.rabbitmq.client.ConnectionFactory;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.QueueingConsumer;  public class Consumer {  private final static String QUEUE_NAME = "hello2";  public static void main(String[] argv) throws java.io.IOException,  java.lang.InterruptedException {  /* 建立连接 */  ConnectionFactory factory = new ConnectionFactory();  factory.setHost("192.168.10.111");// MQ的IP  factory.setPort(5672);// MQ端口  factory.setUsername("asdf");// MQ用户名  factory.setPassword("123456");// MQ密码  Connection connection = factory.newConnection();  Channel channel = connection.createChannel();  /* 声明要连接的队列 */  channel.queueDeclare(QUEUE_NAME, false, false, false, null);  System.out.println("等待消息产生:");  /* 创建消费者对象,用于读取消息 */  QueueingConsumer consumer = new QueueingConsumer(channel);  channel.basicConsume(QUEUE_NAME, true, consumer);  /* 读取队列,并且阻塞,即在读到消息之前在这里阻塞,直到等到消息,完成消息的阅读后,继续阻塞循环 */  while (true) {  QueueingConsumer.Delivery delivery = consumer.nextDelivery();  String message = new String(delivery.getBody());  System.out.println("收到消息'" + message + "'");  }  }  
}  

总结

为了解决系统峰值问题,就要进行削峰填谷,加入消息中间件,把时间拉长,解决瞬时压力问题。当然上面只是列举了RabbitMQ, 还有支持更大并发业务的RocketMQ及Kafka,大家可以举一反三


http://chatgpt.dhexx.cn/article/lJDZtUKm.shtml

相关文章

基于SAC在citylearn模块实现电力需求曲线的削峰填谷———调参记录2

参考几篇DRL调参技巧总结 https://zhuanlan.zhihu.com/p/345353294 https://zhuanlan.zhihu.com/p/434495366 1 增大batch size&#xff0c;减小样本误差 减小辅助reward&#xff0c;使其不影响最终reward&#xff0c;并使其正负均衡 辅助reward属于在每个step均出现&#xf…

电动汽车,削峰填谷

MATLAB代码&#xff1a;面向削峰填谷的电动汽车多目标优化调度策略 关键词&#xff1a;电动汽车 削峰填谷 多目标 充放电优化 参考文档&#xff1a;店主自己整理的说明文档&#xff0c;公式、约束、数据齐全&#xff0c;可联系我查看 仿真平台&#xff1a;MATLAB YALMIPCPLEX 优…

《面试补习》--来聊聊削峰填谷!

概述 今天想和大家聊聊削峰填谷&#xff0c;最近 B 站发生的机房断电事件&#xff0c;和A站的服务雪崩&#xff0c;让我们对高可用关注了起来&#xff0c;之前梳理了高可用三剑客 限流&#xff0c;熔断和降级&#xff0c;今天想继续聊聊削峰填谷,也为后面的高性能篇 做一下铺垫…

电动汽车有序充电参与电网负荷削峰填谷

电动汽车有序充电参与电网负荷削峰填谷。 ID:24400645773662896

考虑储能削峰填谷的含DG配电网可靠性评估

考虑储能削峰填谷的含DG配电网可靠性评估。 1、基于序贯蒙特卡洛的配电网可靠性评估&#xff1b; 2、基于序贯蒙特卡洛的含DG配电网可靠性评估&#xff1b; 3、基于区间迭代法优化储能出力进行削峰填谷&#xff1b; 4、基于上述内容进一步考虑配电网可靠性。 &#xff08;MATLA…

进度模型方法论,利用“削峰填谷”进行资源优化

对进度模型中的活动进行调整,从而使资源使用情况满足资源限制要求,这种技术就是资源平滑。如下图所示。 资源平滑不会改变项目关键路径,完工日期也不会延迟。 利用此方法,我们可以采用一种削峰填谷的方式对进度网络进行资源优化。如下图为某项目在一段时间内的资源使用曲…

利用RabbitMQ实现消息投递削峰填谷

目录 异步和同步如何选择 异步线程 同步收发消息 一、导入依赖库 二、创建RabbitMQ配置类 三、创建消息任务类 异步和同步如何选择 依靠多线程&#xff0c;Java代码可以同步执行也可以异步执行 RabbitMQ提供了同步和异步两种收发消息模式 我们采用 Java异步线程 MQ同步…

【2023A题】电采暖负荷参与电力系统功率调节的技术经济分析(思路、代码)

目录 &#x1f4a5;1 概述 &#x1f4da;2 Matlab代码实现 &#x1f389;3 参考文献 &#x1f308;4 运行结果 &#x1f4a5;1 概述 建设以新能源为主体的新型电力系统是应对全球气候变化挑战的重要举措。高比例新能源接入导致电力系统调节能力稀缺&#xff0c;亟需开发新的调…

面向削峰填谷的电动汽车多目标优化调度策略

面向削峰填谷的电动汽车多目标优化调度策略 关键词&#xff1a;电动汽车 削峰填谷 多目标 充放电优化 参考文档&#xff1a;自己整理的说明文档&#xff0c;公式、约束、数据齐全 仿真平台&#xff1a;MATLAB YALMIPCPLEX 主要内容&#xff1a;代码主要实现了考虑电动汽车参与…

【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

面向削峰填谷的电动汽车多目标优化调度策略——附代码

目录 摘要&#xff1a; 背景介绍&#xff1a; 考虑V2G的电动汽车充放电模型&#xff08;无非凸约束&#xff09; 基于负荷实时变化的分时电价模型 充放电优化调度目标函数 &#xff08;1&#xff09;综合负荷成本以及电动汽车电池退化损耗成本 &#xff08;2&#xff09…

充电站储能削峰填谷方案设计测算报告

1、背景 近年来&#xff0c;为推进我国储能技术朝着商业化应用发展&#xff0c;国家出台了多项政策。从现有政策解读可知&#xff0c;虽然国家鼓励在用户侧建设分布式储能系统&#xff0c;但暂未出台针对用户侧电池储能的充放电标杆电价、容量补贴细则、充放电补贴细则、用户容…

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

问&#xff1a;站点与服务&#xff0c;服务与服务上下游之间&#xff0c;一般如何通讯&#xff1f; 答&#xff1a;有两种常见的方式 一种是“直接调用”&#xff0c;通过RPC框架&#xff0c;上游直接调用下游。 在某些业务场景之下&#xff08;具体哪些业务场景&#xff0c;见…

削峰填谷,你只知道消息队列?

https://baijiahao.baidu.com/s?id1707302054121107350&wfrspider&forpc 概述 今天想和大家聊聊削峰填谷&#xff0c;最近 B 站发生的机房断电事件&#xff0c;和A站的服务雪崩&#xff0c;让我们对高可用关注了起来&#xff0c;之前梳理了高可用三剑客 限流&#xff…

21.面向削峰填谷的电动汽车多目标优化调度策略

说明书 MATLAB代码&#xff1a;面向削峰填谷的电动汽车多目标优化调度策略 关键词&#xff1a;电动汽车 削峰填谷 多目标 充放电优化 参考文档&#xff1a;店主自己整理的说明文档&#xff0c;公式、约束、数据齐全&#xff0c;可联系我查看 仿真平台&#xff1a;MATLAB YA…

MQ,究竟如何做到削峰填谷?

MQ&#xff0c;很多的应用场景&#xff0c;是消息的订阅发布&#xff0c;是系统上下游的解耦&#xff0c;MQ的还有一个典型应用场景是缓冲流量&#xff0c;削峰填谷&#xff0c;本文将简单介绍下&#xff0c;MQ要怎么实现缓冲流量&#xff0c;削峰填谷。 站点与服务上下游之间&…

MQ实战-削峰填谷

对于突然到来的大量请求&#xff0c;您可以配置流控规则&#xff0c;以稳定的速度逐步处理这些请求&#xff0c;起到“削峰填谷”的效果&#xff0c;从而避免流量突刺造成系统负载过高。 1、场景 请求的到来&#xff0c;往往是没有规律的。 例如&#xff0c;某应用的处理能力…

MQ,如何做到削峰填谷

问&#xff1a;为什么会有本文&#xff1f; 答&#xff1a;上一篇文章《到底什么时候该使用MQ&#xff1f;》引起了广泛的讨论&#xff0c;有朋友回复说&#xff0c;MQ的还有一个典型应用场景是缓冲流量&#xff0c;削峰填谷&#xff0c;本文将简单介绍下&#xff0c;MQ要实现…

MATLAB代码:面向削峰填谷的电动汽车多目标优化调度策略

MATLAB代码&#xff1a;面向削峰填谷的电动汽车多目标优化调度策略 关键词&#xff1a;电动汽车 削峰填谷 多目标 充放电优化 参考文档&#xff1a;自己整理的说明文档&#xff0c;公式、约束、数据齐全 仿真平台&#xff1a;MATLAB YALMIPCPLEX 优势&#xff1a;代码注释详实&…

数据中心水蓄冷削峰填谷的经济性分析

摘要 结合国内三大城市的全年气象参数及大型数据中心常用的空调系统&#xff0c;分析数据中心在常用工况下&#xff0c;采用水蓄冷进行削峰填谷的经济性&#xff0c;并指出了大型数据中心采用削峰填谷措施具有良好的经济性。 关键词 &#xff1a;削峰填谷 &#xff1b;数据中心…