浅谈高并发——以秒杀场景为例
导读
高并发指的是同一时刻有大量的用户请求到达服务器,服务器需要对请求进行处理,并及时返回响应信息。通过有限的服务器资源,尽可能快速地处理尽可能多的网络请求,是一个值得深入研究与探讨的话题。
现如今,互联网服务内容越来越丰富,用户越来越多,服务器压力也变得越来越大。在流量不大的情况下,对于小型网站来说,部署简单的动态页面,通过数据库进行信息存取,即可满足大部分应用场景。但随着用户单位时间访问量越来越大,并发越来越高,传统服务器的简单架构已经难以应对大流量的冲击,服务会被冲垮,造成宕机。
要想优雅地处理高并发问题,需要进行全面的考虑,包括但不限于:网络请求、服务器性能、IO瓶颈、带宽等。做好相应的方案设计,才能在资源有限的前提下,提高服务器的承载能力。高并发系统常见的应对措施包括缓存、限流和降级。使用缓存可以有效缓解服务器的压力、增大系统处理能力、加快请求响应速度,几乎是高并发服务器系统的标配;限流是通过减少请求频率来减轻服务器压力;降级的意思是把不重要的服务暂时关闭,节省服务器资源,从而保证核心服务的正常运行,降级首要考虑的问题是区分核心服务与非核心服务,分辨哪些服务可以降级,哪些不能降级。核心服务如写库、下单、支付等是不能降级的,在高并发的情形下需要考虑应对措施保证其可用。
今天我们以生活中常见的秒杀场景为例,结合具体项目—搜狐焦点在线开盘系统,来说明高并发场景的应对措施。秒杀场景有以下几个特点:大量用户同时进行抢购操作,系统流量激增,服务器瞬时压力很大;请求数量远大于商品库存量,只有少数客户可以成功抢购;业务流程不复杂,核心功能是下订单。秒杀场景的应对,一般要从以下几个方面进行处理,如下:
限流:从客户端层面考虑,限制单个客户抢购频率;服务端层面,加强校验,识别请求是否来源于真实的客户端,并限制请求频率,防止恶意刷单;应用层面,可以使用漏桶算法或令牌桶算法实现应用级限流。
缓存:热点数据都从缓存获得,尽可能减小数据库的访问压力;
异步:客户抢购成功后立即返回响应,之后通过消息队列,异步处理后续步骤,如发短信、更新数据库等,从而缓解服务器峰值压力。
分流:单台服务器肯定无法应对抢购期间大量请求造成的压力,需要集群部署服

本文介绍了如何处理高并发秒杀场景,以房产在线开盘系统为例,阐述了限流、缓存、异步处理、分流等策略。通过前端频率控制、后端请求校验、分布式锁、消息队列等技术手段,确保系统在高并发下稳定运行,同时采用多种防刷防作弊策略,保证公平性。
最低0.47元/天 解锁文章
168

被折叠的 条评论
为什么被折叠?



