抢购器 抢拍器 秒杀器 秒杀软件 抢购软件 设计思路(未实现)

为什么写这个?

最近想买个小米手机,结果没抢到,感觉这个抢购是不是有问题,网上一搜,发现有抢购器之类的东西,就分析一下

一、自动抢购需求分析:问题域

 1.1 背景:当前网站经常出现秒杀、限时抢购的活动。
     举例子:电子商务、购物网站类、小米手机抢购
     抢购者往往话费了大量的时间资源在抢购网站中,结果往往却不尽如人意,很多抢不到。浪费了时间,却没有收获。
     假如能够有一个软件能够自动的按网站抢购要求登录网站、进行抢购,并将抢购的结果通知给用户是不是更好呢?
 1.2 一般抢购流程:
     抢购网站用户注册(省略:一般要绑定邮箱,需要先自动注册一个邮箱,然后自动激活功能)
     用户填写登录信息(用户名、密码、验证码信息)
     进入到抢购页面(若干个页面跳转)
     根据抢购需求,自动填写抢购信息:如选中被抢购产品、选中型号、填写抢购的一些信息,如抢购人、抢购时间、抢购送货地址
     抢购成功下一步,抢购失败间隔一定时间继续上面一个操作,
     抢购成功,将抢购成功结果信息通知抢购人(邮件、短信、声讯、电话... ...)
     进入下一步,在线支付,填写好自动支付信息,自动支付成功(通知抢购人自动支付成功)
 1.3 支持多人抢购流程:
     [1] 抢购系统能够模拟一个抢购用户 抢购一个商品
     [2] 抢购系统能够模拟一个抢购用户 抢购多个商品
     [3] 抢购系统能够模拟并发多个抢购用户 抢购 多个相同商品
     [4] 抢购系统能够模拟并发多个抢购用户 抢购 多个不同商品
 1.4 联合抢拍器:
     1.提前60分钟输入验证码
     2.三种抢拍模式:定时、随机、孤品抢拍模式,其中手动模式可以连续监控宝贝动态长达60分钟且不耗费CPU。
     3.修改价格上架抢拍功能,在商城常见的抢拍模式,一般抢拍器无法胜任。
     4.自动支付,比引擎的自动支付更合理,哪件需要自动支付可以单独设置。
     5.开一个软件可以同时抢拍多件宝贝。
     6.自动更新,让用户更省力。
     7.支持颜色、尺码、VIP、匿名、留言等功能。
     8.相互协助抢拍,增加成功率。
     9.即将增加功能:自动探测店主是否更换了尺码颜色等信息,防止这类花招造成抢拍失败。
1.5 “秒杀”,是网络卖家发布一些超低价格的商品,让所有买家在同一时间通过网络进行抢购的一种促销方式。由于商品性价比很高,往往活动一开始就被抢购一空,所需时间甚至以秒计算。
  也正是这种僧多粥少的状况,一种能够高频率点击页面的微型软件——秒杀器应运而生。淘宝网此前举行的“一元秒杀”活动,网友就认为部分人使用抢拍器等软件作弊,破坏了活动的公平性。为此,淘宝网进行了紧急处理,全面禁售此类恶意软件。但事实仅仅是禁止,但淘宝暂时没有办法完全屏蔽这种程序。
  1 服务器压力:在秒杀活动开始的前5分钟内,访问流量会放大到3-5倍,甚至10倍以上,平时设计的压力容量,在这里根本发挥不了作用,如数据保存不了,服务不响应。比如商场的Nike专柜搞活动,所有鞋1元销售,20:00开始,服务员只有3位,大家蜂拥而上,大多数人压根就看不到鞋。
  2 抢拍器:很多人说,我点下去就没有啦,一点不奇怪,抢拍器在活动开始的前2-5分钟启动,每秒钟可以想淘宝发几十次请求,所有商品一上架,秒杀器在0.1秒钟不到就知道上架啦,接下来马上执行下单操作,应该在0.05秒就可以完成,所以抢拍器基本在0.15秒钟就可以将商品拍下。普通人使用浏览器(浏览器加载一个页面就需要2-3秒钟),根本做不到,抢拍器是基于http协议做的,完全可以做到,目前最好用的仍然是安百网的联合抢拍器。
  3 关于验证码问题:绝大多数站点都很难解决,其实验证码可以通过提前访问而获取到的。
  秒杀活动,本意是好的,但是普通人你不使用秒杀器你基本不会买到商品的。不少站点说封杀抢拍器,但是知道HTTP的人都知道,服务器端不会知道是人还是抢拍器在做这个事情,对付低级的抢拍器是可以的,但是高级点的抢拍器是没有办法的,就比如说安百网联合抢拍器。不少人在发牢骚,其实很多使用抢拍器的人在偷笑。当然如果这些活动不会惠及到普通人,让少部分人得益,重在参与,乐在其中。

二、自动抢购解决方案:人机交互领域:用程序模拟人机交互过程 设计域
   思路一:找现成的:抢购器 抢拍器 秒杀器 秒杀软件 抢购软件
           http://goolexyz.blog.sohu.com/
   思路二:runloader或录屏软件、性能测试软件、人机测试软件等。
   思路三:研发解决思路:
      2.1 将抢购人信息写入到抢购系统的数据库User表中的信息包括:用户名、密码、抢购的产品名称型号、邮箱、电话、邮寄地址、抢购开始时间和抢购结束时间、抢购频率、抢购最大次数、抢购数量、是否子线支付等。
      2.2 根据抢购人,批量启动抢购用户登录抢购网站
          关键技术:验证码识别技术:验证码自动识别技术 http://www.skycn.com/soft_intro.php?id=55424
      2.3 网站内跳转、设置值、http请求相关 抓包分析
      2.4 抢购动作:http post操作
          每一个页面提交都是一个http请求,可以通过抓包工具,抓到请求的协议和参数,返回的协议和参数,
          用httpclient之类的工具模拟发送请求即可
          如模拟登陆、模拟填写抢购订单、等等
          尤其注意:sessionId,每次向服务器发送请求时,一定要带上上次将返回的sessionId,保证session验证能够通过
      2.5 抢购成功 -->  发短信、邮件、声讯通知抢购者
      2.6 计费功能:抢购成功一个收取一定费用
      2.7 配置自动在线支付,可以在线支付
   
三、自动抢购实施解决:实现域、实施域
      3.1整理出http交互协议:httpclient
         获取验证码协议:请求、响应
         登陆协议:      请求、响应
         抢购订单:      请求、响应
         支付协议:      请求、响应
      3.2数据库设计:MySQL
         用户表:用户名、密码、抢购的产品名称型号、邮箱、电话、邮寄地址、抢购开始时间和抢购结束时间、抢购频率、抢购最大次数、抢购数量、是否子线支付,用户并发抢购线程数,抢购次数,抢购状态、抢购结果等。
      3.3UI原型:html/jsp/php/python
         录入用户信息界面
         启动抢购流程登陆获取认证码界面
         抢购主界面:抢购用户任务进度情况界面:包括一些信息:用户、开始抢购时间、用户当前执行的操作,返回的结果... ...
         增加抢购、停止抢购、暂停抢购、删除抢购
         统计报表:多少用户抢购,抢购成功的数量、失败的数量
      3.4 技术架构:
         分层架构:UI(html/jsp) + spring + spring jdbc/ibatic/hibernate + mysql + OS(Linux/Windows)
         后台多线程:concurrent包、spring job、spring batch、timers等
         应用服务器:tomcat jvm

四、自动抢购验证总结:测试、验证域
    苹果抢购、小米抢购、火车票抢购、淘宝抢购、京东抢购、苏宁、国美、....测试验证
    http://bbs.xiaomi.cn/thread-6480236-1-1.html
    http://www.xiaomi.com/index.php

  • 14
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
### 回答1: 对于高并发场景下的商品秒杀,我的设计思路是采用分布式架构,将请求分散到多个服务上进行处理,同时使用缓存技术和消息队列来提高系统的性能和可靠性。具体来说,可以采用以下措施: 1. 使用缓存技术:将商品信息、用户信息等常用数据缓存在内存中,减少数据库的访问次数,提高系统的响应速度。 2. 使用消息队列:将用户的请求放入消息队列中,异步处理,避免请求堆积,提高系统的并发能力。 3. 限流措施:设置访问频率限制,防止恶意攻击和过度消耗系统资源。 4. 数据库优化:使用数据库连接池、索引等技术来提高数据库的性能和并发能力。 5. 分布式架构:将请求分散到多个服务上进行处理,避免单点故障和系统崩溃。 通过以上措施的综合应用,可以有效地提高系统的性能和可靠性,实现高并发场景下的商品秒杀。 ### 回答2: 在高并发场景下实现商品秒杀需要考虑几个方面的设计思路。 首先,为了提高系统的并发能力,可以通过分布式架构来设计。将商品库存等信息分散到多台服务上,通过负载均衡来均衡并发访问请求,减轻单个服务的压力。 其次,为了防止超卖问题,可以使用分布式锁来保护商品库存的减少操作。当一个用户发起抢购请求时,先获取锁进行商品数量减少的操作,在减少成功后再进行下一步操作,否则释放锁。这样可以保证只有一个用户可以成功购买商品。 另外,为了提高系统的响应速度,可以使用缓存来减少数据库的压力。将商品信息或者库存信息缓存在内存中,用户访问时直接读取缓存中的数据,而不是直接访问数据库。当商品抢购成功后,再对缓存中的数据进行更新。 此外,为了防止恶意请求,可以使用验证码来进行人机验证。在用户参与秒杀之前,先输入验证码进行验证,只有验证通过后才能参与秒杀活动。 最后,可以通过限制每个用户的参与次数来平衡系统压力。例如,设置每个用户只能参与一次秒杀活动,这样可以避免少数用户通过机人等方式进行大量请求,从而导致系统崩溃。 综上所述,高并发场景下实现商品秒杀需要通过分布式架构、分布式锁、缓存、验证码和限制参与次数等多种设计思路来提高系统的并发能力、保证数据一致性、提高响应速度,并防止恶意请求。 ### 回答3: 在高并发场景下实现商品秒杀,主要需要考虑以下几个方面的设计思路: 1. 分布式系统架构:为了应对高并发的请求,需要使用分布式系统架构,将请求分散到不同的服务节点上进行处理。可以采用主从架构或集群架构来实现。 2. 缓存优化:为了提高系统的响应速度,在秒杀开始前将商品信息加载到缓存中,并使用缓存技术如Redis等进行商品库存管理。当用户请求秒杀时,先从缓存中读取商品信息,减轻数据库的压力,并且可以设置缓存的过期时间,避免商品库存信息不一致的问题。 3. 队列消息机制:秒杀场景涉及到同时并发大量的请求,使用队列消息机制可以缓解高并发带来的压力。当用户下单时,将用户请求放入消息队列中,再由消息队列异步地处理用户的秒杀请求。 4. 限流措施:为了避免系统过载导致崩溃,需要对用户请求进行限流处理。可以使用令牌桶算法或漏桶算法来控制系统的请求处理速率,以保证系统的可用性。 5. 数据库优化:秒杀涉及到大量的数据库操作,针对这一情况可以进行数据库的优化。例如,可以使用数据库连接池来提高数据库连接的效率,同时对数据库进行垂直切分或水平分片等策略,使得数据库能够承载更高的并发请求。 总之,在高并发场景下实现商品秒杀需要从系统架构、缓存优化、消息队列、限流措施和数据库优化等多个方面进行综合考虑,以提高系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值