首页 > 其他分享 >秒杀商品实时热点发现及如何进行测试

秒杀商品实时热点发现及如何进行测试

时间:2024-09-06 20:23:34浏览次数:14  
标签:缓存 数据 系统 实时 秒杀 测试 热点

目录

热点数据实时保护步骤

重要注意事项如下

实时热点发现策略

一、构建异步系统

二、热点上报和订阅机制

三、实时数据分析

四、异步采集与秒级响应

热点数据处理

一、缓存优化

二、限流与隔离

三、动态调整

秒杀商品测试时需要注意的事项?

一、功能测试

二、性能测试

三、安全测试

四、其他测试


秒杀系统本质上仍然是读数据的热点问题,而且是最简单的 前面已经提及通过业务隔离能够提前识别热点数据,就好比通过分析历史成交记录可以发现热门商品、通过分析用户的购物车记录也可以发现比较好卖的商品一样。难点在于未能提前发现的商品突然成为热点------这就要通过实时热点数据分析来判断了。我们做了可以在3秒内发现交易链路上的实时热点数据的设计,并根据实时发现的热点数据实时保护每个系统,它的具体实现步骤简述如下。

热点数据实时保护步骤

第一步,构建一个异步的、可以收集交易链路上各个中间件产品(如 TengineTair 缓存、 HSF 等)本身统计的热点 key ( Tengine Tair 缓存等中间件产品本身已经有热点统计模块)。

第二步,建立热点上报和可以按照需求订阅的热点服务的下发规范,主要目的是通过交易链路上各个系统(详情、购物车、交易、优惠、库存、物流)访问的时间差,把上游已经发现的热点透传给下游系统,提前做好保护(比如在大促高峰期,详情系统是最早知道哪些是热点商品的),在统计接入层上用 Teng in 模块统计出热 URL。

第三步,将上游系统收集到的热点数据发送到热点服务台上,这样下游系统如交易系统就会知道哪些商品被频繁调用,再对此做热点保护。

重要注意事项如下

热点服务后台抓取热点数据日志最好是异步的,一方面便于做到通用性,另一方面不影响业务系统和中间件产品的主流程。

热点服务后台、现有各个中间件和应用本身的保护措施没有取代关系,每个中间件和应用还需要保护自己 热点服务台提供收集热点数据、热点订阅服务的统一规范和工具,便于各个系统热点数据透明化。

热点发现要做到实时(3 秒以内)。

图片

实时热点发现策略

针对秒杀系统中的实时热点数据发现,可以采取以下策略:

一、构建异步系统

秒杀系统可以构建一个异步系统,用于收集交易链路上各个环节的中间件产品的热点key信息,如Nginx访问URL、缓存命中情况等。

这些中间件产品(如Nginx、缓存系统、RPC服务框架等)本身可能具备热点统计模块,可以实时收集并上报热点数据。

二、热点上报和订阅机制

建立热点上报和按需订阅热点服务的下发规范。通过交易链路上的各个系统(如详情页、购物车、交易、优惠、库存、物流等)之间的时间差,将上游系统发现的热点数据透传给下游系统。

例如,在大促期间,详情页系统最早知道哪些商品可能成为热点,然后通过统一接入的Nginx模块统计热点URL,并将这些信息上报给热点服务台。

三、实时数据分析

对收集到的热点数据进行实时分析,通过大数据计算、统计等方法识别出真正的热点数据。

分析结果可以通过订阅分发的方式推送到各个系统,各系统根据自身需求决定如何处理这些热点数据,如进行缓存、限流等。

四、异步采集与秒级响应

热点数据采集最好采用异步方式,以保证不影响业务的核心交易链路。

热点发现应做到秒级实时,以便在热点数据产生时立即做出响应,防止系统过载。

热点数据处理

一旦热点数据被发现,需要进行有效的处理以减轻系统压力。

一、缓存优化

缓存热点数据是最为有效的优化手段。通过缓存热点数据,可以减少对后端数据库的访问次数,降低系统压力。

热点数据可以存储在Redis等高速缓存系统中,并设置合理的过期时间和淘汰策略。

二、限流与隔离

对热点操作进行限流处理,防止恶意刷单或过度访问导致系统崩溃。

隔离热点数据与普通数据,确保热点数据的处理不会影响到其他正常数据的处理。

可以通过业务隔离、系统隔离和数据隔离等多种方式实现隔离效果。

三、动态调整

根据热点数据的实时变化动态调整系统资源分配和处理策略。

例如,在热点数据流量激增时,可以自动增加缓存容量、调整限流阈值或增加服务器资源等。

秒杀商品测试时需要注意的事项?

一、功能测试

秒杀时间设置:确保秒杀活动在设定的时间范围内正确开启和结束,用户可以在指定时间内参与秒杀。

限购数量:测试用户购买数量的限制,包括边界值测试(如最大购买数量、最小购买数量)和异常测试(如一个ID多次购买)。

付款时间:测试付款时间的边界值,如支付超时后的处理逻辑。

库存处理:测试秒杀过程中库存的实时变化,包括超时支付后库存的恢复处理。

并发购买:测试多个用户同时购买同一商品时的成交规则,确保系统的幂等性(即同一订单只能成交一次,其他尝试失败)。

订单回调:测试订单在不同状态(如支付成功、支付失败、自动取消支付、风控取消)下的回调处理逻辑。

主动查询:测试用户主动查询订单状态的功能,确保系统能够准确同步并返回订单的最新状态。

二、性能测试

并发数测试:模拟高并发情况,测试系统同时支持多少用户一起秒杀,确保系统在高并发下的稳定性和响应速度。

接口限制:测试系统接口的访问限制,如一秒内允许的最大访问次数,以保证系统的稳定性和防止恶意攻击。

响应速度:测试系统的响应速度和页面加载速度,确保用户在秒杀过程中能够快速完成操作。

三、安全测试

越权下单:测试无权购买某个商品的用户尝试下单时系统的处理逻辑,防止越权操作。

数据越权:测试无权查看某些数据的用户是否能够获取到这些数据,确保数据的安全性。

支付接口加密:测试支付接口的数据加密传输情况,确保用户的支付信息在传输过程中不被窃取。

数据库日志加密:测试数据库日志中的敏感信息是否加密存储,防止敏感信息泄露。

四、其他测试

用户场景测试:针对不同的用户场景进行测试,如新用户、老用户、不同设备、不同网络环境等,确保系统在各种场景下都能正常运行。

容错性测试:测试系统在高负载、数据库连接超时等异常情况下的容错能力,确保系统能够自动处理这些错误并恢复正常运行。

标签:缓存,数据,系统,实时,秒杀,测试,热点
From: https://blog.csdn.net/qd_lifeng/article/details/141927362

相关文章

  • 如何编写测试用例
    目录一、测试用例是软件测试的核心 二、什么叫测试用例 三、编制测试用例 1、测试用例文档 2、测试用例的设置 3、设计测试用例 四、测试用例在软件测试中的作用 1、指导测试的实施 2、规划测试数据的准备 3、编写测试脚本的"设计规格说明书" 4、评估测试......
  • 05JAVA第一次测试编程题整理
    02控制语句引用对象要自己初始化classHotel{intprice;intcom;}intn=sc.nextInt();for(inti=1;i<=n;i++){if(h[i]==null){h[i]=newHotel();}/*Hotel[......
  • 失真度检测仪检定装置 信号失真度测试仪 失真度仪校准器
    失真度的测量方法谐波分析法谐波分析法也是一种常用的测量失真度的方法。该方法中,信号经过滤波器后,将信号频谱拆分为各个谐波成分,然后对各个成分进行分析,从而计算出失真度。该方法适用于高频信号的测量。波形比较法波形比较法是最直观的失真度测量方法,在该方法中,将信号的原始波形与......
  • 【软件测试】设计测试用例
    ......
  • 软件测试学习笔记丨Pytest的使用
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/221581.简介pytest是一个成熟的全功能python测试框架测试用例的skip和xfail,自动失败重试等处理能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试,接口自动化测试pytest有很多第三方插件,并......
  • python测试开发基础---threading
    1.核心概念线程(Thread):线程是轻量级的进程,在同一进程内可以并行执行多个任务。线程共享进程的资源,如内存和文件描述符,但每个线程有自己的执行栈和局部变量。全局解释器锁(GIL):Python中的GIL限制了同一进程中多个线程的真正并行执行。它确保同一时间只有一个线程可以执行Pyth......
  • 测试主板天线性能对蓝牙信号的影响
    主板的天线在增强蓝牙信号方面确实扮演着重要角色。以下是对此问题的详细分析:一、主板天线对蓝牙信号的影响必要性:主板集成蓝牙模块时,通常需要通过天线来实现信号的收发。天线在蓝牙通信中起到至关重要的作用,它不仅能够防止外界干扰,还可以增强蓝牙信号的覆盖范围,以及优化蓝牙信号的......
  • python测试开发基础---multiprocessing.Pool
    1.基础概念多进程编程:Python中的multiprocessing模块允许你使用多个进程并行执行任务,这可以提高程序的性能,尤其是在需要大量计算的情况下。Pool类是一个常用工具,可以帮助你更轻松地管理多个进程。进程池:进程池是一个包含多个工作进程的池子,用来处理多个任务。你可以将任......
  • PAT乙级 1030 完美数列 测试点3.4
    一、题目二、代码#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;boolcmp(longlonga,longlongb){ returna<b;}intmain(){ longlongn,p; cin>>n>>p; longlongnum=0,temp=0; ve......
  • 直播美颜SDK与主播美颜工具:实时美颜技术的深度解析
    本篇文章,笔者将深入解析直播美颜SDK的核心技术与主播美颜工具的开发原理。 一、什么是直播美颜SDK?通过集成美颜SDK,开发者可以在直播应用中快速实现脸部优化、滤镜添加、皮肤调整等功能,帮助主播在直播过程中实时呈现最佳状态。不同于传统的后期处理,直播美颜SDK依靠强大的实时处理能......