MQ进阶:如何用MQ解决并发问题
在上一篇文章“MQ入门:跑通第一个单机案例”中,小编为大家讲解了如何自定义队列,并演示如何通过MQ实现消息通信。有了这层基础,小编本期为大家讲解进阶知识:如何用MQ解决并发问题。
1 需求背景
1.1 功能性需求
通信运营商新增了一批号卡,进行了一系列促销推广,并在某时间段内允许抢号。
抢号流程如下:通过SIM卡申请单,选择号卡,提交申请后,若抢号成功系统会发送消息通知用户“抢号成功”。
1.2 非功能性需求
1. 开抢时间段内,大量并发涌入,可能会增加服务器负载,造成服务器崩溃;
2. 若开抢时间内,大量用户抢同一号卡,则可能造成数据重复。
2 解决方案
1. 通过MQ异步削峰,减轻服务器负载;
2. 结合队列的数据结构性质,消除数据重复插入问题。
注:MQ的配置方法可参考上一篇文章:“MQ入门:跑通第一个单机案例”。
3 操作步骤
Step1 创建号卡申请单
首先,打开【表单设计器】界面,添加工具栏【直接并发提交】和【MQ处理并发】。
注:为了测试方便,单据编号取消必录和唯一性校验。

接着,增加号码的唯一性校验,并添加必录。具体操作如下图所示:

然后,注册表单插件类用于响应工具栏点击,类名称为:kd.demo.sci.formplugin.MulThreadsEdit,具体操作如下图所示:

Step2 模拟并发请求
通过类kd.demo.sci.task.LatchTest模拟并发请求,具体原理如下图所示:

Step3 模拟申请单业务
利用并发业务实现类kd.demo.sci.task.BizCodeThread和消费者实现类kd.demo.sci.consumer.DemoConsumer 分别模拟直接触发和MQ触发两种方法,业务内容为生成17299999999的号卡申请单。
4 实现效果
1. 点击【直接并发提交】,然后到monitor平台查看流量和CPU负载情况,在单据列表中查看数据。
【monitor流量监控】:最大通过QPS为172。

【monitor指标监控】:系统CPU负载峰值为50%。

【单据列表】:出现了4条重复数据。

2. 点击【MQ处理并发】,可实现异步削峰,并解决重复插入问题。
【monitor流量监控】:最大通过QPS为27,相比之前的172有大幅下降。

【monitor指标监控】:系统CPU负载峰值13%,相比之前的50%有所下降。

【单据列表】:数据正确,无重复数据。

小贴士:
本文涉及到的表单元数据及插件类,可点击下方链接,滑至文末,自行下载文章底部附件。
其中:
元数据为前文所用的单据页面,导入即可使用;
kd.demo.sci.task.BizCodeThread为并发业务实现类,用于实现并发的具体业务;
kd.demo.sci.consumer.DemoConsumer为消费者实现类,用于消费者执行提交动作;
kd.demo.sci.task.LatchTest为模拟并发请求类,用于模拟并发场景;
kd.demo.sci.formplugin.MulThreadsEdit为表单插件类,用于响应工具栏点击。

以上就是本期的全部内容啦,下一篇我们将介绍如何用MQ解决分布式事务
#往期推荐#
更多精彩内容,“码”上了解!↓
MQ进阶:如何用MQ解决并发问题
本文2024-09-23 00:31:27发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140015.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf