上个项目做了一个红包雨功能,这里回顾总结一下,红包雨高并发场景如下: 提供2万用户30秒内5次请求的并发服务支持 >

红包雨的实例配置:

  • AMD 计算型 c7a
  • 16 vCPU
  • 32 GiB
  • 云盘类型(ESSD AutoPL)所选云盘的最大IOPS为 40000,最大吞吐量为 705 MB/s
  • ecs.c7a.4xlarge 100Mbps (峰值)

压测的实例配置:

  • 8 vCPU 16 GiB (I/O优化)
  • ecs.e-c1m2.xlarge 100Mbps (峰值)
  • 云盘类型(ESSD AutoPL)所选云盘的最大IOPS为 40000,最大吞吐量为 705 MB/s

分红包

流程:拆分红包-》写入缓存--》写入文件 接口示例:http://139.224.70.38:8097/api/v3/sendRedPackage?totalMoney=1000000&redPackageNumber=500000

抢红包

流程:从缓存中取一个红包--》存入另一个缓存--》线程池异步发送消息队列--》消息队列消费保持缓存日志消息--》定时任务获取缓存--》分批次插入数据库中。

如果运行中出现以下错误说明RocketMQ的收发TPS有上限,需要调整机器的配置,升配: RocketMQ Message hasn't been sent. Caused by CODE: 215 DESC: Proxy rocketmq-proxy-rmq-cn-zpr3fdq3u0d messages flow control

在这里插入图片描述由于10万次请求都是同一个应用服务收发,使用支持消息读写TPS总和20万次,在30秒内处理完,则需要6,666.666666666667 在这里插入图片描述 由于代码是异步发送消息 在这里插入图片描述可以降低一些要求 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述在这里插入图片描述 性能瓶颈在redis和rocketmq,由于mysql是定时任务分批次批量插入,所以对其要求不高。