用Asp.net 就能轻松实现铁道部的订票系统

作者: 2012/1/12 12:00:00

   前言

  最近经常看到买票难,作为搞技术的我TMD的骂一次:

   票会增加吗?总是有人能买到,有人不能买到;

   就不能换个思路设计订票系统。

   要是我是什么什么的来着,早已经实现通过手机短信、网站就能轻松买票了;

   还顺便将手机实名制给实现了。

  

  正文

   不知是我想简单了,还是专家们想复杂了。

  铁道部的专家还停留在线下售票方案中拨不出来;

  线上售票系统简单得多了。

  骂完铁道部后,提供一简单又可行的解决方案。

  查询余票、防止超售、防止黄牛,一般的设计思路是有难度,

  换个思路,TMD太简单的就能搞定。

  一、总体方案

  1、正常情况:预订交钱-->后台自动验证规则-->不符合购买限制的钱原路退回-->

  -->提醒用户预订成功(但不一定有票)-->运输资源出来,根据先到可先得+优化级的原则分配

  -->短信通知用户取票

  2、用户不取票:没有关系,因为铁道部已经收到钱,所以你开车前两小时取即可。

   多方便啊,就不用为了票多走一次车站。

  3、用户退票:春运有人退吗?平时要是退了,就退吧

  二、前台网站设计

  只需要预订,根本不需要查余票什么的。所以很简单的架构就能搞定,甚至不用CDN

  三、后台设计

  预订后,后台慢慢处理,看资源情况增加服务器。即使后台的服务器挂了,前台用户也感觉不出来。

  运输资源出来,看有多少是分配给网上订票的,依规则分配即可。

  这样后台的架构要有多灵活,就可以设计成多灵活。

  后台由验证服务器+分配服务器+取票及跟踪服务器组成。

  具有分配资格的,满足了身份证唯一、已付款、优先级等等要求了;

  而且是一票一票分配的,根本就没有什么复杂的逻辑处理,也没有什么数据库表锁;

  因为能分配的已经满足了锁的要求了,用单线程分配就好了。

  2核的一秒就可以处理1000张票以上。

  四、可能的问题

   1、有存在海量的处理的情况吗?没有,预订对数据只是增加操作,不需要扣除数量锁表

   2、有峰值压力吗?没有,预订时要处理的事情很少很少

   3、能不能订到票,心里没底?预订和抢票,没有区别啊,

  关键一点的是,预订可以有复杂的预计,比如允许自动安排下一趟什么的;

  多灵活啊。也不要做哪些没有意义的重复提交。

   4、如果铁道部的内部人员想作弊,采用什么方式都可能存在作弊

   五、优点

  1、能提前10年预订都没有问题,只要铁道部和旅客愿意。将来的目标发展为:个人旅行管理系统

  2、前台轻量,爱怎样扩展就怎样扩展

   3、后台爱怎样处理都行,而且可以很容易监控,有异常还可以人工偷偷处理一下,用户根本感觉不到

  4、实际上这样一套系统上线,在家中买票,要坐车再去取票就可以了。不够铁道部的关系人少了点代理收入。

  经以上分析,结论:用Asp.net+SQL2008 就可以轻松实现。特别是后台,用C#.net开发绝对是优势。

特别推荐

玩家留言 跟帖评论
查看更多评论