主题:【原创】好吧,给一个铁道部订票系统的正确答案 -- 布老虎
后端服务器先检查这哥们的钱够不够。因为这钱已经存进铁道部的系统, 这就直接在铁道部的数据库里(就叫存款数据库吧)查询就行了,用不着到工农中建的服务器上去做啥web service。钱够了,直接扣就行。简单的按身份证号sharding数据库table就行了,200个MySql serve, 每个32G内存,够全国人民用的吧?全部响应在毫秒级。
如果这哥们钱不够,把请求扔到一个message queueu(就叫insufficient funds queue吧), 然后email 短信啥的就不多说了。
如果这哥们钱够了,先扣钱,然后把请求扔到一个message queue(就叫 seat checking queue 吧),这个queue主要就是占座位了。如果座位被占了,那么就回到存款数据库里把钱退回去。如果座位还有,那么就占座,然后发送两个message, 一个message到另外一个message queue (就叫做cache update queue吧),这个queue的任务是更新第一步里面的cache(看,叔叔没有骗你吧?)。另一个message当然就是发短信确认订座了。 这一步的响应也应该在毫秒级。
您说的这个系统肯定是能实现的。但用户体验也是将是很差的。
买票作为一个流程,对乘客来说在网上买票其实和到车站售票处买票都是买票。对于乘客来说,最重要的是我交了钱就要拿到票。
到车站售票处买票,售票处不能跟顾客说,你先把钱交了,然后我短信通知你有没有票,拿不拿得到票。都是一手交钱一手交票。
同样的,网上售票也不能用这种先交钱,过一阵再出票的形式。这么搞的话,只要有一两次人家交了钱却订不到票或者要重新订票,人家就不会再信任这个系统了。
网上售票和网上售货一样,卖的归根到底也是一种货物。大型的网上售货网站在顾客下订单收钱之前就要查库存。如果库存不足就要立刻通知顾客没货了。
所以流程应当是乘客查询订票-》系统查询库存-》锁定库存-》受理客户支付-》确定客户有钱-》出票。
- 相关回复 上下关系8
🙂买oracle的确不用负责任 2 四处张望 字30 2013-11-05 02:49:11
🙂我的确不懂“买 Oracle 就不用负责任”这种见鬼逻辑 1 志大才疏 字459 2013-11-08 00:08:23
🙂官僚体制下如果资金足够,或者说钱不是问题 1 四处张望 字278 2013-11-09 01:02:37
🙂这用户体验可就很差了
🙂花之,讲到问题核心了 百年 字104 2014-01-04 23:35:53
🙂不能用一个烂系统取代另一个烂系统吧 任爱杰 字236 2014-01-04 23:49:16
🙂谷歌和百度的业务特点和铁道部不同自然不能套用 百年 字123 2014-01-04 23:58:59
🙂这个不是这样的 1 懒厨 字396 2013-11-03 20:11:40