浅谈高并发——以秒杀场景为例
导读高并发指的是同一时刻有大量的用户请求到达服务器 , 服务器需要对请求进行处理 , 并及时返回响应信息 。通过有限的服务器资源 , 尽可能快速地处理尽可能多的网络请求 , 是一个值得深入研究与探讨的话题 。
现如今 , 互联网服务内容越来越丰富 , 用户越来越多 , 服务器压力也变得越来越大 。在流量不大的情况下 , 对于小型网站来说 , 部署简单的动态页面 , 通过数据库进行信息存取 , 即可满足大部分应用场景 。但随着用户单位时间访问量越来越大 , 并发越来越高 , 传统服务器的简单架构已经难以应对大流量的冲击 , 服务会被冲垮 , 造成宕机 。
要想优雅地处理高并发问题 , 需要进行全面的考虑 , 包括但不限于:网络请求、服务器性能、IO瓶颈、带宽等 。做好相应的方案设计 , 才能在资源有限的前提下 , 提高服务器的承载能力 。高并发系统常见的应对措施包括缓存、限流和降级 。使用缓存可以有效缓解服务器的压力、增大系统处理能力、加快请求响应速度 , 几乎是高并发服务器系统的标配;限流是通过减少请求频率来减轻服务器压力;降级的意思是把不重要的服务暂时关闭 , 节省服务器资源 , 从而保证核心服务的正常运行 , 降级首要考虑的问题是区分核心服务与非核心服务 , 分辨哪些服务可以降级 , 哪些不能降级 。核心服务如写库、下单、支付等是不能降级的 , 在高并发的情形下需要考虑应对措施保证其可用 。
今天我们以生活中常见的秒杀场景为例 , 结合具体项目—搜狐焦点在线开盘系统 , 来说明高并发场景的应对措施 。秒杀场景有以下几个特点:大量用户同时进行抢购操作 , 系统流量激增 , 服务器瞬时压力很大;请求数量远大于商品库存量 , 只有少数客户可以成功抢购;业务流程不复杂 , 核心功能是下订单 。秒杀场景的应对 , 一般要从以下几个方面进行处理 , 如下:
限流:从客户端层面考虑 , 限制单个客户抢购频率;服务端层面 , 加强校验 , 识别请求是否来源于真实的客户端 , 并限制请求频率 , 防止恶意刷单;应用层面 , 可以使用漏桶算法或令牌桶算法实现应用级限流 。缓存:热点数据都从缓存获得 , 尽可能减小数据库的访问压力;异步:客户抢购成功后立即返回响应 , 之后通过消息队列 , 异步处理后续步骤 , 如发短信、更新数据库等 , 从而缓解服务器峰值压力 。分流:单台服务器肯定无法应对抢购期间大量请求造成的压力 , 需要集群部署服务器 , 通过负载均衡共同处理客户端请求 , 分散压力 。除此之外 , 设计一个秒杀系统还需要考虑系统的可扩展性 , 客户量级进一步增大后 , 能够方便地进行容量扩展 。
房产在线开盘是一种典型的高并发秒杀场景 , 买房的人往往多于房源数量 , 几千人同时抢购并不是什么稀罕事 , 一些热门楼盘甚至出现万人抢房的空前盛况 。搜狐焦点在线开盘系统为这种场景提供了可靠的解决方案 , 能够从容应对万人级别的并发抢购场景 , 抗并发能力在实际开盘中得到检验 。该系统整体架构如图1所示 。
推荐阅读
- 剑网三 宠物 攻略 灰狐
- 一方木材怎么算,一方是怎么计算的
- 家装博古架效果图大全,博古架图片大全室内
- 如何学会分析问题 如何解决问题
- 怎么把Word文字快速转成表格
- 用康王洗头发正确方法 - 康王一停就又有头屑
- 其实焦虑症很容易好 如何解决过度焦虑
- 德国曼全新一代tgs卡车四驱技术
- 手工制作简易小灯笼 「灯笼制作手工制作大全」
