我一直有一个疑问,看过一些秒杀代码,类中都会有一个 hashmap 来存储当前某个产品的库存,进入方法的时候获取对应商品的库存,如果够的话就执行之后的代码,如果不够的话就去库或者 redis 继续取。伪代码如下
private HashMap map = new HashMap();
/**
* 库存判断
*/
public void preHandle(int id) {
//判断 map 中的数量
if(Integer.parseInt(map.get("id").toString())<1){
//获取库中的数量,并 put 到当前的 map 中,假定 result 为库中获取到的数量
int result = 10;
//如果数量>0 ,则执行下单逻辑
if(result>0){
order();
}else {
//抛出库存不足的异常
}
}
//执行下单逻辑
order();
}
public void order(){
//订单逻辑
}
那如果现在我有 3 台机器,其中两台中的 map 中的 id 为 1 的商品数量为 0 了,只有一台 map 中 id 为 1 的数量为 10 。我是如何确保对应访问的流量是对应到有余量的服务上的呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.