今天去面试,被问到一个问题,【秒杀】是如何来实现的? 秒杀的主要问题就是别卖超了,因为应用服务器有多台,所以synchronized肯定是不行的,直接访问DB肯定更不行了,那就只能是使用memcache或者redis之类来实现。有知道细节的没? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 memcache存成个list,index超出的部分返回错误值?或者不put? http://www.iteye.com/topic/1119017?page=1这里有一些关于秒杀的讨论,可以参考一下。 多台服务器,数据共享。memcache当然行了。其实数据库也行,就是效率太低,不太实用:你把相应的记录锁住或者把表锁了,就可以实现了。 直接用db我觉得可以啊,update时指明剩余数量要大于0,如果update返回1+则说明抢到了,返回0则说明没抢到,即便在update之前想做一些check那可以开事务然后select for update加个锁 为什么都要想到数据端呢?考虑程序端解决啊,调用同一个接口,形成队列,然后处理队列的Index就OK了! 可以使用memcache将秒杀产品读入存储 每次秒杀通过MQ操作 有序进行 逐个递减 公司网站(asp.net)几次秒杀都失败了,架构是基于:IIS+接口+oracle,后采用apache,在线用户数也就11000就挂了,谁有经验可以交流下?!是不是应该采用Haproxy或nginx ?! 如何获取java程序中可能出现的异常 数据类型转换 如何在jcombox下拉菜单中显示数据库的一列 關於JInternalFrame 生成面板设置大小问题~ 事件是什么? BigDecimal如何格式化?急! 请教高手,一个scjp模拟试题的问题 如何从一个新开的窗口中传回几个参数? 一个指针指向两个对象? java类变量的垃圾回收问题 java最近对StackOverflowError问题
memcache存成个list,index超出的部分返回错误值?或者不put?
这里有一些关于秒杀的讨论,可以参考一下。
其实数据库也行,就是效率太低,不太实用:你把相应的记录锁住或者把表锁了,就可以实现了。
考虑程序端解决啊,调用同一个接口,形成队列,然后处理队列的Index就OK了!