普通web程序放到IIS上运行
标题说得有点模糊,咱们也就不说什么临界资源了,举例说明,就谈论网上订票系统
A,B,C,D四个人,前三个都 买 北京->上海的票,而D是 退 北京->上海的票的,假如他们是同时刻访问网站的,而且他们没访问前,只有一张剩票,那么,A,B,C到底谁买不上票?
我猜想,估计是某个“机构”象操作系统进程调度那样,加他们到等待队列,对于数据库来讲,还是一个一个依次来。用PV操作那种做法来弄那么我的问题是:如果我的假设是对的,那么上面的“机构”是谁,谁来调度的。是IIS,数据库,还是程序本身?
标题说得有点模糊,咱们也就不说什么临界资源了,举例说明,就谈论网上订票系统
A,B,C,D四个人,前三个都 买 北京->上海的票,而D是 退 北京->上海的票的,假如他们是同时刻访问网站的,而且他们没访问前,只有一张剩票,那么,A,B,C到底谁买不上票?
我猜想,估计是某个“机构”象操作系统进程调度那样,加他们到等待队列,对于数据库来讲,还是一个一个依次来。用PV操作那种做法来弄那么我的问题是:如果我的假设是对的,那么上面的“机构”是谁,谁来调度的。是IIS,数据库,还是程序本身?
2.D的请求第二个到IIS,IIS开始写数据库,并等待数据库执行结果,以便反馈D有无退票成功;
3.B的请求第三个到IIS(也可以是与D同时到IIS毕竟是多线程并发的),IIS请求数据库,悲催的是: (1).B明明在D之后或同时来到IIS,可是D的退票还没写入数据库,于是没买到。
(2).D的票在B请求数据库就写入了数据库中退票信息表,可是采用事务更新剩票表还没完成,所以
(3).D的退票明明写入数据库了,剩票表也更新了,可万恶的程序员采用了数据缓存技术(5分钟后刷新),B查到的剩票仍为0。4.C最后一个到了,也正好是D退票后的5分钟,于是他成功了。这个故事告诉我们,早起的虫儿被鸟吃。呵呵,只是随便侃侃,里面内容很不严谨。http://blog.csdn.net/cwbugs/article/details/7268267
我是这么猜的,不知道是否正确。谈论这个,就是希望能开发出更高效的系统