昨晚和一公司工作几年的同事闲扯了一些程序人生和技术问题。感觉自己目前的经验还是太少太少了,看的书也不是太多,惭愧啊。

就比如同事问了我一个如何做一个我们很常见的“秒杀”系统,我当时一拍脑门直接回答说加个排它锁不就行了么,但是晚上回到家里google了一番之后,深深的感到脸红啊。一个看似简单的“秒杀”系统,里面涉及到的东西也着实不少,而不仅仅是一个简单的加锁就行了的。我大致整理了一下我想到的和google到的需要注意的地方,当然有很多的不足,同时也希望大神们能够指点一点:

1)对现有网站业务的冲击

因为秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。

2)高并发情况以及数据库的负载

用户在秒杀开始前,通过不停的刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连接数据库,会对应用服务器、数据库服务器造成极大的负载压力。

3)突然增加的网络和服务器带宽

假设商品页面大小200K(主要是商品图片大小),那么需要的网络和服务器带宽是2G(200K×10,000),这些网络带宽是因为秒杀活动新增的,超过网站平时使用的带宽。

4)直接下单

秒杀的游戏规则是到了秒杀时间才能开始对商品下单购买,在此时间点之前,只能浏览商品信息,不能下单。而下单页面也是一个普通的URL,如果得到这个URL,不用等到秒杀开始就可以下单了。

5)防止机器秒杀

防止网上的一些“秒杀器”

针对上面的5个问题,对应的策略如下:

1)  秒杀系统独立部署

为了避免因为秒杀活动的高并发访问而拖垮整个网站,使整个网站不必面对蜂拥而来的用户访问,将秒杀系统独立部署,如果需要,还可以使用独立的域名,以和网站完全隔离,即使秒杀系统崩溃了,也不会对网站造成任何影响。

2)  秒杀商品页面静态化

秒杀商品页面重新设计,不使用网站原来的商品详情页面,页面内容静态化:商品描述,商品参数,成交记录,用户评价全部写入一个静态页面,用户请求不需要经过应用服务器的业务逻辑处理,也不需要访问数据库。所以秒杀商品服务不需要部署动态的Web服务器、数据库服务器。

3)  租借秒杀活动网络带宽

对于因为秒杀新增的网络带宽,必须和运营商重新购买或者租借。为了减轻网站服务器的压力,需要将秒杀商品页面缓存在CDN,同样需要和CDN服务商临时租借新增的出口带宽。

4)  动态生成随机下单页面URL

为了避免用户直接访问下单页面URL,需要将该URL动态化,即使秒杀系统的开发者也无法在秒杀开始前访问下单页面的URL。办法是在下单页面URL加入由服务器端生成的随机数作为参数,在秒杀开始的时候才能得到。

5)  防止“秒杀器”感觉很难,

因为似乎总是有办法可以跳过设置的“障碍”。真正做到防止,仅靠webserver怕是很难防范,一般的做法都是增加一些人为的“障碍”,比如:

注册时有一定的门槛,像皮皮书屋一样,通过输入程序执行结果作为验证 –à之前批量手工注册

参加秒杀的积分或者等级策略 -à 挂太阳,就如同你当你为了升级QQ等级的时候一直挂着QQ一样。

验证码,阻止自动化操作 -à 可以图像识别

ip阻止 –à 但是ip可以伪造,可以代理

python秒杀系统_如何实现“秒杀”系统相关推荐

  1. linux python开发环境_如何在Linux系统中搭建Python编程环境

    1 在大多数的Linux系统中,基本上都默认安装了Python,也就是说,在Linux的系统中基本上是不需要安装什么软件,就可以使用Python. 下面以ubuntu操作系统为例,看看如何在Linux ...

  2. python日志审计系统_综合日志审计系统

    原标题:综合日志审计系统 产品简介 中安威士综合日志审计系统(简称VS-LS),该系统 能够通过主被动结合的手段,实时不间断地采集用户网络中各种不同厂商的安全设备.网络设备.主机.操作系统.以及各种应 ...

  3. python分布式日志收集系统_分布式日志收集系统Scribe原理

    1.分布式日志收集系统:背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应 ...

  4. 万维全自动网络考试平台python题库_万维全自动考试系统

    万维全自动考试系统是非常实用轻便的自动考试系统软件,可以实现简单的标准化考试,人工辅助的计算机自动测评,有各种自动考试系统的各种强大功能,大大降低了人工阅卷的辛苦,感兴趣的朋友可以来极光下载站体验! ...

  5. 人类视觉系统_对人类视觉系统的对抗攻击

    人类视觉系统 Neural Networks are exceptionally good at recognizing objects shown in an image and in many c ...

  6. 开源mes系统_如何让iMES系统快速落地变得so easy?

    如何让iMES系统快速落地变得so easy?没有任何一套iMES系统不经交付过程,就可以完美的匹配于企业的业务流程,尽快现在很多基于SaaS概念的云端的iMES产品号称可以2周上线,但是只有经过精心 ...

  7. 法庭智能语音系统_法庭智能语音识别系统_法庭智能语音系统解决方案_深圳市亚讯威视数字技术有限公司...

    法庭智能语音系统 现状与需求 庭审过程中,需要形成文字版庭审记录,便于事后追溯或跟踪.现有的人工听写方式受限于记录员的业务熟练程度和打字速度,导致记录效率较低.浪费人力.采用信息化手段改善记录工作,提 ...

  8. 联想ghost重装系统_联想电脑怎么重装系统的方法

    联想电脑怎么重装系统呢?电脑在使用长了以后就免不了会发生一些问题,运行的速度越来越慢,这个时候如果找不到具体原因,就只能重装系统了,那么怎么重装联想电脑win7系统,联想电脑怎么重装系统呢?这些问题虽 ...

  9. MySQL学生综合测评系统_大学生综合测评系统的设计和实现(MySQL)

    大学生综合测评系统的设计和实现(MySQL)(任务书,开题报告,中期检查表,毕业论文20000字,程序代码,数据库) 摘  要 本文详细介绍了本系统设计的基本方法.系统的需求分析.系统的架构设计和系统 ...

最新文章

  1. gcc编译选项的循环重复查找依赖库等命令
  2. c语言 集中上机题目,C语言集中上机题目.doc
  3. 可编程ic卡 通用吗_8255可编程IC
  4. xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程
  5. 正则式获取特定标识的字符串并替换
  6. 高频交易鼻祖竟是靠「金发女郎」取得了400%的年回报
  7. windows电脑记事本怎么自由排序?
  8. matlab表示dbm,[转载]dBm换算成mW
  9. 微信小程序-image标签
  10. lwj_C#_泛型使用
  11. 2018-DeepLabV3+论文解读
  12. php 加减法,php加减法
  13. Android开源项目 陌客随机聊天
  14. 数独游戏-安卓版源代码和分析。
  15. 第八部分 项目资源管理
  16. 爬虫从头学之Requests+正则表达式爬取猫眼电影top100
  17. python使用第三方函数库_Python(七)python下的内部函数库和第三方函数库
  18. 有什么软件android跟电脑连接无线,手机电脑连接的软件有哪些(安卓手机连接电脑的方法)...
  19. LeetCode 61-70题 这是动态规划合集啊?受宠若惊
  20. 指针难点——数组指针、指针数组、函数指针、指针函数详解

热门文章

  1. PTA-C语言基础编程(一)
  2. 【图像处理】PS 用彩图生成单色图
  3. 建行u盾弹不出来_为什么建行网银盾插上后没有页面跳出
  4. 【Unity】 Spine渲染原理解析与源码解读
  5. Charls抓包工具使用
  6. 以UES为例,分析区块链目前的发展现状
  7. 洛谷-P1553-数字反转
  8. 亲测好用软件及网站(嵌入式软硬件工作周边应用)
  9. 鸿蒙系统究竟是PPT秀还是有真材实料?鸿蒙HarmonyOS开发环境搭建与运行Demo
  10. Java操作Redis存储对象类型数据