锁定老帖子 主题:讨论火车票订购网站架构
精华帖 (6) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-05
qianlei007 写道 这种架构还用讨论?
支付宝去找个架构师 或者 去聚划算挖个 架构师过来。 轻松应付了。 架构师年轻的时候也在讨论这个问题 |
|
返回顶楼 | |
发表时间:2012-01-05
hu437 写道 aws 写道 廖明华 写道 采用内存数据库,将火车票的信息,采用文件存储,系统启动加载初始化文件,也可以通过web实现,将其最新的数据提交,按照高峰期每一天的最大数据量,提交到内存数据库(这个可以扩大,可以存放1亿等数据),每隔一段时间对内存数据进行过滤,进行异步存储,将已经卖出的票得信息进行数据迁移,同时在提交一部分新的火车票信息(可以考虑火车票预警信息方式)。在满足数据更新的同时,还能够保证在线用户数据的需求。购票者在进行购票的同时,对内存数据库的操作,速度会非常的快,每秒7W次并发应该是没有任何问题的,这个已经测试过。
尽量在数据交互的中间环节,采用队列方式,可以缓存部分数据,采用异步交互的方式,可以缓解数据并发量大的问题。个人意见! 不行的,火车票不是商品,单纯论个数的 简单的说比如 仅有一张从上海到北京的票,如果有人买了从上海到南京,那么接下来就只剩下从南京到北京的可以买了 而铁路的线路图,算可以出的票和余票比这个例子要复杂至少几百个维度 而且这些都是实时的,还有各种事务和事务补偿问题 对数据的读和写的操作比你这个设想要复杂的多 根据我坐火车的经历貌似没有"如果有人买了从上海到南京,那么接下来就只剩下从南京到北京的可以买了" 这个情况 有人在南京下了,那这个位置就空了,在路上的谁抢到谁坐,火车站是不会再卖的了 这个应该是卖的无座票吧 无座漂确实是谁抢到是谁的 |
|
返回顶楼 | |
发表时间:2012-01-05
把秒杀改改,就行了
|
|
返回顶楼 | |
发表时间:2012-01-06
aws 写道 Mirima 写道 查询不需要完全实时
查询和订票可以分开 可以按线路切分 进入订票流程后方考虑一致性 保证支付的有效性 ...... 不知道硬体支撑如何,不过使用友好度可以提升 就第一条,你说的就已经是扯淡了 所以你完全不了解什么叫完全实时 |
|
返回顶楼 | |
发表时间:2012-01-06
很多都是一些站这说话腰不疼的人...
自暴下. 如果叫我设计这个网站的架构我还真设计不出来. |
|
返回顶楼 | |
发表时间: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)用户看到订票结果。 |
|
返回顶楼 | |
发表时间:2012-01-06
解决的办法就是开放接口.将压力分担出去.比如找10个接口合作方或者更多.合作方和12306之间可以走socket通信.而不是http,这样流量就会小很多.至于12306 当然要分库,加缓存.
|
|
返回顶楼 | |
发表时间:2012-01-06
什么啊 12306 网站的 最初上线的时候 前面 是Apache 后面罩着 weblogic
貌似还有什么iis 什么的.... 硬件有刀片什么的.... 对了 貌似短信什么的delphi写的...... 动态内容jsp ,asp什么的都是在静态页面里iframe 进来的...... 对了部分数据库可是oracle .... |
|
返回顶楼 | |
发表时间: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?是异步的哦。 |
|
返回顶楼 | |
发表时间:2012-01-06
还是需要从业务上进行优化,分线路缓解服务器压力。
|
|
返回顶楼 | |