新浪微博 登陆  注册   设为首页 加入收藏

学PHP >> javascript >> 面试中的一个问题-秒杀架构

面试中的一个问题-秒杀架构

查看次数15019 发表时间2014-03-09 17:48:15

淘宝秒杀架构题目来自一家游戏公司笔试题 由于自己重为做过电商方面性能要求如此高的项目,拿到这个题的时候是一头雾水,只有参考一些项目随便写了一点。 下面是我回答的(实在很烂,抛砖引玉...

淘宝秒杀架构

题目来自一家游戏公司笔试题

 

由于自己重为做过电商方面性能要求如此高的项目,拿到这个题的时候是一头雾水,只有参考一些项目随便写了一点。

 

下面是我回答的(实在很烂,抛砖引玉):

一、模块分解 :

    1)秒杀商品管理

    2)秒杀功能实现

    3)......忘了当时怎么写的了。

 

二、功能详细设计

     1)秒杀商品管理,生成静态页面。静态页面、上面图片使用nginx apache管理,提高响应速度。

     2、秒杀功能:使用ajax实现秒杀功能,ajax调用后台服务。

                             后台秒杀任务使用数据库控制秒杀执行成功与否,更新或者改变表字段和检查放在同一条sql中。

。。。。

 

后来我在网上也查了一下其他队秒杀的讨论,转载过来

 

如下是转载来的思路,各位大神请多多指教!

 秒杀思路:后台根据商品加入秒杀发布秒杀详细信息,生成静态页面,发布信息添加到库,前台查看秒杀信息,

(我前台的概念是买家使用的系统为前台,公司内部使用的管理系统为后台),秒杀中库存和事件通过ajax

取服务器时间(客户端的时间不准),秒杀库存的统计已下单为主,库存数量的更改以下单为准,秒杀结束和下面《》里内容

就直接抛秒杀结束的静态页面.

 

阻止秒杀请求,比如有一个商品,已经有100人在秒杀,前100人至少有一个人来买  

正在秒杀的信息可以放入缓存(可以用开源的memcached等)【key:商品id,value:action请求统计数】

(只允许让产品数量的N倍以内的人请求秒杀可以通过配置文件判断)

 

 

要参与秒杀的商品都放入缓存中,价格,库存,id,数量,加上一个字段 加上sell_num 卖出数量,缓存中存储是否

已经达到卖出数量,达到的话就直接抛出秒杀结束静态页面。支付的时候根据是否已卖出判断,商品的秒杀数量已经达到的话操作秒杀用户信息的操作事务回滚。先下单成功的去库中减1,保存用户支付信息

 

( action请求统计数可以单独弄服务器来做 这个action只做一件事情就是统计请求数量,用servlet就可以了,一台不行,弄多台,多台的话可以考虑单独一个缓存服务器)

昨天晚上睡觉的时候还在想这个秒杀,还是发现了一些问题,一个在秒杀商品共享一个action,

1:每个商品的秒杀用户都可能不同,都会变化,一起秒杀过来,怎么让秒杀同一个商品的共享同一个action

2:什么时候开始对USER_NUM开始递增,根据客户端时间显然不行,调度?还是每次请求都判断下时间?

解释下为什么要同一个商品要共享一个action:用户数不是确定的 秒杀这个商品的人肯定得共享这个商品的action,为了知道USER_NUM是否已经超过允许的,不允许的话直接抛出秒杀结束静态页面。有多少的秒杀商品就应该有多少的action实例,请求的这个商品的秒杀就是请求这个商品对应的action,但是参与秒杀的商品数不是固定的。该如何设计action,这样的需求怎么配置???秒杀这玩意儿还真的很麻烦,你妹的,看来这样的action无法配置,那就所有用户共同用一个action,放一个map, key:商品ID,value:请求数。这个商品有请求的话就放入map,重新put(商品id,请求+1)每次请求判断下该商品的时间,到了时间就对该商品的请求数进行+1操作

 

 

网络误差:请求action的到操作库的时间 可能会导致超过了秒杀结束时

主要的问题

1共同问题:宽带问题

2     服务器端的问题:1:web服务器所在的PC硬件配置 2 web服务器的处理能力 3 数据库服务器的处理能力

       用户的问题:1 用户PC配置问题 2 用户所使用的浏览器(用IE就是等死) 3 用户对秒杀点击的及不及时问题

 

前台对于秒杀时间问题显示问题:加载静态页面用ajax 请求服务
(转发请注明转自:学PHP)    


  相关推荐



1楼 学PHPER说: 2015-11-30 17:01:37
处理的优点简单吧
2楼 Wilhelmina说: 2016-12-21 19:52:50
Finidng this post solves a problem for me. Thanks!
3楼 Wilhelmina说: 2016-12-21 19:53:13
Finidng this post solves a problem for me. Thanks!
4楼 Jaclyn说: 2016-12-22 09:16:46
Great stffu, you helped me out so much!

  发表评论
昵称:
(不超过20个字符或10个汉字)
内容: