`
步青龙
  • 浏览: 298087 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

秒杀思路以及问题

 
阅读更多

推荐链接

 

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

(我前台的概念是买家使用的系统为前台,公司内部使用的管理系统为后台),秒杀中库存和事件通过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 请求服务器,获取服务器时间当前时间和开始时间,结束时间,

然后页面秒杀的时间就根据第一次请求的时间用js处理

 

一个文章不错,贴上来:javascript实现秒杀倒计时

 

被秒杀过的商品数据直接转入历史库,原表不存该数据,减少查询时间,秒杀关注的是未来或者正在秒杀的商品,历史已成为过去,只是查看。

 

秒杀这东西我感觉都是虚头,刚好那一秒 0 微妙 如此精确的时间,这个时间点可能真的没人在0微妙 秒杀到,那肯定还有要让一个人秒杀到的,估计很多是选这一秒内的随机数,或者这一秒的第一个人。如果以提交订单为主那就谁先提交谁先得到。

提交定后后,秒杀结束,静态页面灰色的立即购买该为该商品以过期,减少不必要的考虑

所有问题都已解决,网络延迟,这个问题我们这个真心没办法

秒杀seckill大致接口:

 

前台就是请求静态页面查看,ajax查询动态信息,比如库存,秒杀时间

1:查询秒杀分类信息接口(包括全部秒杀,aa秒杀,bb秒杀,价格段秒杀)         

2:搜索秒杀接口

3:秒杀详细内页接口    

4: 秒杀剩余时间接口    

5: 跳转秒杀结束静态页面接口

6:查询秒杀开始结束和当前服务器时间接口 

7:查询已卖出数接口

8: 查询秒杀缓存接口

9: 修改秒杀缓存接口

10:删除秒杀缓存接口

后台:

1:商品加入秒杀接口(同时添加到缓存中) 

2:秒杀分类管理接口                

3:修改详细秒杀信息接口

4:删除详细秒杀信息接口(转入历史库)

5:静态页面生成接口  

6:历史秒杀管理接口  

7:秒杀搜索接口               

8:请求配置(配置商品的N倍才可请求秒杀)

9:审核接口

 

一文章不错,大攒下, 秒杀        

分享到:
评论
3 楼 javaboy2006 2014-07-15  
ahyyxx222 写道
感觉想多了,秒杀的重点只是排个队,还有让无意义的人不要再排了。
秒10个,就开放1000个,只要能承受1000并发,监控到数量够了,立即将处理秒杀的服务器断开服务,用另一台服务器静态资源替代。原秒杀服务器开始按到达时间统计那1000个的先后然后取前10个,再去执行入库、购买提示之类的操作准备,然后重新上线,给用户发结果通知,如果有的用户先后时间精确度无法区分,大可以随机排个先后,用户也没理由反对。

memcached还是不要用了,毕竟也是个网络连接,纯内存处理是最快的,进1000个,断开,处理,然后重新上线,通知

分布式环境下如何构建队列?
只能在每个分布式节点上各自构建队列,然后根据可秒杀资源总数从各个队列头中随机获取命中的请求,最后消耗掉资源(持久化),并通知命中的请求会员。
2 楼 步青龙 2012-06-07  
ahyyxx222 写道
感觉想多了,秒杀的重点只是排个队,还有让无意义的人不要再排了。
秒10个,就开放1000个,只要能承受1000并发,监控到数量够了,立即将处理秒杀的服务器断开服务,用另一台服务器静态资源替代。原秒杀服务器开始按到达时间统计那1000个的先后然后取前10个,再去执行入库、购买提示之类的操作准备,然后重新上线,给用户发结果通知,如果有的用户先后时间精确度无法区分,大可以随机排个先后,用户也没理由反对。

memcached还是不要用了,毕竟也是个网络连接,纯内存处理是最快的,进1000个,断开,处理,然后重新上线,通知

多谢,我再整理下思路
1 楼 ahyyxx222 2012-06-07  
感觉想多了,秒杀的重点只是排个队,还有让无意义的人不要再排了。
秒10个,就开放1000个,只要能承受1000并发,监控到数量够了,立即将处理秒杀的服务器断开服务,用另一台服务器静态资源替代。原秒杀服务器开始按到达时间统计那1000个的先后然后取前10个,再去执行入库、购买提示之类的操作准备,然后重新上线,给用户发结果通知,如果有的用户先后时间精确度无法区分,大可以随机排个先后,用户也没理由反对。

memcached还是不要用了,毕竟也是个网络连接,纯内存处理是最快的,进1000个,断开,处理,然后重新上线,通知

相关推荐

    商城秒杀系统设计思路

    这是一个关于如何设计商城秒杀系统的思想。完美的解决了超卖问题和数据存盘问题。有需要的朋友可以看一下。

    秒杀系统架构优化思路

    ### 秒杀系统架构优化思路 #### 一、秒杀业务难点分析 秒杀系统面临着巨大的挑战,尤其是在处理高并发请求方面。与IM系统(如QQ、微博等)和个人社交平台不同,后者主要处理的是用户的个性化数据读取,而秒杀系统...

    redis使用watch秒杀抢购思路.pdf

    "Redis 使用 Watch 机制实现秒杀抢购思路" Redis Watch 机制 在高并发的秒杀抢购场景中,如何确保数据的一致性和安全性是非常重要的。Redis 的 Watch 机制可以很好地解决这个问题。Watch 机制是 Redis 的一种乐观...

    开发前台,后台秒杀活动设计思路

    开发前台、后台秒杀活动设计思路 概述:本文讨论了秒杀活动的设计思路,包括秒杀的特征、秒杀架构和设计思路。秒杀活动对稀缺或者特价的商品进行定时、定量售卖,吸引大量的消费者进行抢购,但又只有少部分消费者...

    高性能电商秒杀解决方案

    高性能电商秒杀解决方案 秒杀的特点 • 大量用户在秒杀时间点发起购买请求,造成网站流量瞬间...思路: • 加缓存,减少数据库访问 • 消息排队,并发缓冲 • 异步下单,增强用户体验 • 客户端轮询,判断是否抢购成功

    【源码版】基于SpringMVC的电商高并发秒杀系统设计思路

    在构建一个基于SpringMVC的电商高并发秒杀系统时,设计思路往往涉及到多个关键领域。首先,我们从系统架构层面来分析,秒杀场景下的系统设计需要考虑到以下几个核心要点: 1. **高并发处理**:秒杀活动通常会引来...

    如何设计秒杀系统 秒杀系统架构优化思路

    ### 如何设计秒杀系统:秒杀系统架构优化思路 #### 一、为什么秒杀系统难做? 秒杀系统的难点在于其特殊的业务场景——在短时间内处理极大量的并发请求。例如小米手机每周二的秒杀活动,尽管备货可能只有1万台手机...

    秒杀系统架构设计-许大牛

    秒杀系统架构设计是互联网行业中一个非常重要的领域,特别是在电商、票务等高并发场景下,秒杀活动能够迅速清空库存,同时吸引大量用户流量。许大牛,作为一个在IT行业内具有较高知名度的人物,他的秒杀系统架构设计...

    PHP商品秒杀功能实现源码

    在PHP中实现商品秒杀功能是一项常见的电商技术挑战,它涉及到高并发处理、库存管理以及用户体验等多个...提供的"ms"文件可能包含了一个简单的秒杀功能示例代码,可以参考其中的设计思路,结合自己的框架进行实际开发。

    秒杀系统分析与实战

    面对这样的挑战,秒杀系统需要解决以下问题: **1. 对现有网站业务造成冲击** - **解决方案**:将秒杀系统独立部署,使用独立域名,确保其与主站业务完全隔离。 **2. 高并发下的应用、数据库负载** - **解决方案...

    项目实现秒杀

    秒杀业务分析、架构规则、高并发带来的挑战、高并发下的数据安全以及秒杀的三种优化思路

    简易秒杀系统

    至于“interview”这个文件名,可能包含的是关于该项目的面试问题或者设计思路,具体内容未知,但可以推测其中可能涉及如何设计高可用、高性能的秒杀系统,如何处理秒杀场景下的异常情况,以及如何测试和优化系统...

    vue实现秒杀倒计时组件.docx

    Vue 实现秒杀倒计时组件 Vue 实现秒杀倒计时组件是一种常见的 Web 开发技术,主要用于实现秒杀倒计时功能。该组件可以应用于电商平台、活动促销、限时秒杀等场景。 该组件的实现思路主要包括以下几个步骤: 1. ...

    秒杀小项目

    秒杀系统是电商领域常见的一种营销手段,通过限时限量的抢购活动吸引用户,增加销售额。在这个名为"秒杀小项目"的...同时,该项目还涉及到限流、降级和监控等微服务治理方面,充分展示了现代电商平台的架构设计思路。

    16个经典面试问题回答思路

    总的来说,面试是对个人综合能力的考察,不仅要求具备专业知识,还需要良好的沟通技巧、问题解决能力以及团队合作精神。通过提前准备和理解这些问题背后的目的,应聘者可以更好地展示自己的优势,提高面试成功率。在...

    秒杀倒计时控件

    这篇博客《秒杀倒计时控件》可能为我们提供了一些思路和实践案例。 在开发秒杀倒计时控件时,我们需要关注以下几个关键知识点: 1. **前端显示**: - 控件设计:控件通常包含一个数字显示区域,显示剩余时间,...

    秒杀业务实现

    秒杀业务实现是一种常见的电商活动,它涉及到多个技术领域的整合,包括前端展示、后端处理、数据库交互以及消息队列的使用。在这个项目中,采用了Spring Boot、MyBatis、Redis、ActiveMQ和MySQL等技术来构建一个相对...

    电商秒杀系统

    以上是构建电商秒杀系统的关键技术点和设计思路,实际开发过程中还需要结合具体业务需求和现有技术栈进行调整和优化。对于文档《电商秒杀系统》中的详细内容,建议查阅以获取更深入的实践经验和解决方案。

    商城团购秒杀插件,可以直接整合ecshop使用

    【标题】"商城团购秒杀插件"是电商系统中的一种功能组件,它设计用于增强电商平台的销售策略,吸引更多的用户参与购物活动。这个插件的特别之处在于它可以与"ecshop"无缝集成,ecshop是一款流行的开源电子商务平台,...

Global site tag (gtag.js) - Google Analytics