房产在线开盘是一种典型的高并发秒杀性能测试场景,买房的人往往多于房源数量,几千人同时抢购并不是什么稀罕事,一些热门楼盘甚至出现万人抢房的空前盛况。某在线开盘系统为这种场景提供了可靠的解决方案,能够从容应对万人级别的并发抢购场景,抗并发能力在实际开盘中得到检验。该系统整体架构如图所示。

性能测试

 

除此之外,设计一个秒杀系统还需要考虑系统的可扩展性,客户量级进一步增大后,能够方便地进行容量扩展。

下面具体介绍一下在线开盘系统的性能测试技术细节:

总体方案如下:从前端开始,在各层级模块进行限流处理,对单个用户的请求频率作限制,进行多级校验,及时丢弃⽆效请求;前端和后端联合进行请求数据校验,防止请求作弊,减小服务器负载。

具体如下: 客户登录时,在nginx层经过会lua脚本的防刷处理,对登录接口访问频率作限制,防止登录接口请求频率过高导致的数据库崩溃;同时,前端读取当前时间戳,与用户ID进行拼接后进行Hash运算,生成token,存储在Redis缓存以及Cookie中,并返回Cookie给客户端浏览器;该token作为用户的身份校验凭证,每次发起抢购请求时,后端都会校验该token,判断前后端是否匹配,若不匹配则拒绝客户端请求,并提示用户重新登录;

从图可以看出,当用户从其他设备重新登录时,会生成最新的token覆盖旧token,原设备Cookie中存储的token则失效。这样保证了C端用户只能在单台设备上进行登录,减少了用户通过多台设备同时参与秒杀的可能。