论坛首页 Java企业应用论坛

讨论火车票订购网站架构

浏览 56150 次
精华帖 (6) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2012-01-05  
qianlei007 写道
这种架构还用讨论?
    支付宝去找个架构师 或者 去聚划算挖个 架构师过来。
    轻松应付了。

架构师年轻的时候也在讨论这个问题
0 请登录后投票
   发表时间:2012-01-05  
hu437 写道
aws 写道
廖明华 写道
   采用内存数据库,将火车票的信息,采用文件存储,系统启动加载初始化文件,也可以通过web实现,将其最新的数据提交,按照高峰期每一天的最大数据量,提交到内存数据库(这个可以扩大,可以存放1亿等数据),每隔一段时间对内存数据进行过滤,进行异步存储,将已经卖出的票得信息进行数据迁移,同时在提交一部分新的火车票信息(可以考虑火车票预警信息方式)。在满足数据更新的同时,还能够保证在线用户数据的需求。购票者在进行购票的同时,对内存数据库的操作,速度会非常的快,每秒7W次并发应该是没有任何问题的,这个已经测试过。
   尽量在数据交互的中间环节,采用队列方式,可以缓存部分数据,采用异步交互的方式,可以缓解数据并发量大的问题。个人意见!


不行的,火车票不是商品,单纯论个数的
简单的说比如
仅有一张从上海到北京的票,如果有人买了从上海到南京,那么接下来就只剩下从南京到北京的可以买了
而铁路的线路图,算可以出的票和余票比这个例子要复杂至少几百个维度
而且这些都是实时的,还有各种事务和事务补偿问题
对数据的读和写的操作比你这个设想要复杂的多


根据我坐火车的经历貌似没有"如果有人买了从上海到南京,那么接下来就只剩下从南京到北京的可以买了" 这个情况

有人在南京下了,那这个位置就空了,在路上的谁抢到谁坐,火车站是不会再卖的了


这个应该是卖的无座票吧 无座漂确实是谁抢到是谁的
0 请登录后投票
   发表时间:2012-01-05  
把秒杀改改,就行了
0 请登录后投票
   发表时间:2012-01-06  
aws 写道
Mirima 写道
查询不需要完全实时
查询和订票可以分开
可以按线路切分
进入订票流程后方考虑一致性
保证支付的有效性
......


不知道硬体支撑如何,不过使用友好度可以提升



就第一条,你说的就已经是扯淡了



所以你完全不了解什么叫完全实时
0 请登录后投票
   发表时间:2012-01-06  
很多都是一些站这说话腰不疼的人...

自暴下.
如果叫我设计这个网站的架构我还真设计不出来.
0 请登录后投票
   发表时间:2012-01-06  
我班门弄斧,来画个架构图,嘿嘿


看附图。

另,提交订票订单的处理流程如下:
1)用户通过浏览器访问系统URL
2)界面集群F5将请求转发至某一节点,通过比较用户数据库的内容进行身份鉴权。
3)鉴权成功后进入订票,提交订票订单(查询流程暂不讨论)界面显示请等待
4)订票消息被发送至总线部件(接口可用web Service、RMI、甚至自定义协议都可以)
5)总线收到订票消息、去Cache集群查询相关车次
6)Cache根据自身维护的车次余票表,返回查询结果,如果有余票,转7)。如果无票了,则总线返回界面集群“没票了”,界面提示用户明天再试。
7)若有余票,则总线返回界面集群“正在出票,请等待”,并将订票请求压入队列。且发消息至Cache,告诉CACHE将订票请求加入队列。
8)Cache收到总线队列增加1个的消息,将自身维护的对应车次余票数减1个。
9)总线另一线程负责从队列中取消息,并发送至出票部件。
10)出票部件产生订票结果,并修改数据库,发送“订票成功”消息回总线。
11)总线将订票成功消息直接回传至界面集群。
12)用户看到订票结果。
  • 大小: 79.2 KB
0 请登录后投票
   发表时间:2012-01-06  
解决的办法就是开放接口.将压力分担出去.比如找10个接口合作方或者更多.合作方和12306之间可以走socket通信.而不是http,这样流量就会小很多.至于12306 当然要分库,加缓存.
0 请登录后投票
   发表时间:2012-01-06  
什么啊 12306 网站的 最初上线的时候 前面 是Apache  后面罩着 weblogic
貌似还有什么iis 什么的....  硬件有刀片什么的.... 对了 貌似短信什么的delphi写的......
动态内容jsp ,asp什么的都是在静态页面里iframe 进来的...... 对了部分数据库可是oracle ....
0 请登录后投票
   发表时间:2012-01-06  
SuseLinux 写道
我班门弄斧,来画个架构图,嘿嘿


看附图。

另,提交订票订单的处理流程如下:
1)用户通过浏览器访问系统URL
2)界面集群F5将请求转发至某一节点,通过比较用户数据库的内容进行身份鉴权。
3)鉴权成功后进入订票,提交订票订单(查询流程暂不讨论)界面显示请等待
4)订票消息被发送至总线部件(接口可用web Service、RMI、甚至自定义协议都可以)
5)总线收到订票消息、去Cache集群查询相关车次
6)Cache根据自身维护的车次余票表,返回查询结果,如果有余票,转7)。如果无票了,则总线返回界面集群“没票了”,界面提示用户明天再试。
7)若有余票,则总线返回界面集群“正在出票,请等待”,并将订票请求压入队列。且发消息至Cache,告诉CACHE将订票请求加入队列。
8)Cache收到总线队列增加1个的消息,将自身维护的对应车次余票数减1个。
9)总线另一线程负责从队列中取消息,并发送至出票部件。
10)出票部件产生订票结果,并修改数据库,发送“订票成功”消息回总线。
11)总线将订票成功消息直接回传至界面集群。
12)用户看到订票结果。

队列用JMS?是异步的哦。
0 请登录后投票
   发表时间:2012-01-06  
还是需要从业务上进行优化,分线路缓解服务器压力。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics