本人的工程实践项目是设计一个类似12306的网上售票系统,本文将分析该项目的同时对软件架构进行初步设计。项目信息题目基本要求参考12306站点进行售票系统建模设计,尽可能接近覆盖真实线上系统,实现的功能有但不限于:用户信息注册查询余票: 根据时间,车次,站点区间,座次(一等座,二等座,硬卧,硬座…)查询余票售票: 支持一次购买同一车次的多张车票(多人),支持订单30分钟内锁定,超时释放。支付接口可
转载 2023-07-10 22:58:56
1895阅读
铁道部旗下在线购票网站12306自诞生起就一直为人所诟病,网站经常崩溃、UI粗糙、漏洞满框,但这都不是什么新闻了,近日网友爆出12306的技术框架及其表结构,大家可以来一览究竟。下图是爆出的SQL语句,可以明显地看出其表结构,相信各位技术人员能够轻易地辨别出网站开发者的功底如何了吧。 SSH组合,根据这些漏洞可以很轻易地进行SQL注入,从而达到非法攻击或者盈利的目的。据了解,专业技术人士发现1
每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!12306 抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 QPS,上百万的并发再正常不过了!笔
春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可。但是,12306就不是那么简单了,具体复杂在
关于12306网站和清华某院长的微博言论,我做了一个小回复,说这玩意不难,2个人2周,40台服务器可以搞定。 下面详细解释一下大概的思路。免费share一下,看看靠谱不靠谱。 别人看到的是流量,我先看结构,这里的数据结构是相当简单的,主要满足的需求是: 1.车次查询(最常见的是起点站,终点站查询 和车次直接输入查询)+余票显示 所谓的用户刷页面,绝大部分应该在这里。日均10亿pv(这个数字我
1. 项目简介  本课题参考12306站点进行售票系统建模设计,实现一个类12306售票系统,尽可能接近覆盖真实线上系统,实现的功能有但不限于:用户信息注册查询余票:根据时间,车次,站点区间,座次(一等座,二等座,硬卧,硬座等)查询余票售票:支持一次购买同一车次的多张车票(多人),支持订单30分钟内锁定,超时释放退票:支持一个用户帐户下的批量退票改签:同一用户一张车票只能改签一次2. 软件架构  
转载 2023-07-13 19:12:16
1837阅读
前言春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可。但是,12306就不是那么简单了,具体复杂在哪里,我
读了几篇有关12306架构设计的博客,在这里做下简单的总结:主要角色:用户 主要功能:查询剩余票数 售票一 分析业务 业务复杂点: 1 库存集中:所有登录的用户访问的都是数据中心的票据数据 2 复杂的业务逻辑:还有很多查询操作,查时间,查座位,查铺位,一个车次不 行,又查另一个车次,其伴随着大量的查询操作,下单的时候需要对数据库操作。另外,关于秒杀,完全可以做成只接受前N个用户的请求(完全不操
在前面的文章里,12306票池架构探讨(一)和12306票池架构探讨(二)里大概说了下票池实现的思路和选用的数据结构(数据结构上还有些争议),主要的思想就是将整个票池放在内存里 – 整个数据库都在内存里。 关于票池的需求,请参看我的另一篇帖子:http://12306ng.org/thread-1682-1-1.html。 架构设计整个票池的架构如下图所示:  系统
在刚刚过去的淘宝双11大促活动中,淘宝的技术支撑受到了网民的追捧。而12306火车票购票系统,逢假日必瘫痪,真是天上地下。12306为何如此烂?12306火车票购票系统,逢假日必瘫痪,引发了强烈反响。国庆前后,“问诊12306”的时候,铁道系统的答复是,购票人数太多,数据量过大。但是,在前不久淘宝双11大促活动中,淘宝双十一总交易金额191亿,订单1亿零580万笔,其中无线支付近900万笔,支付宝
作者:绘你一世倾城 每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!12306 抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 QPS
转载 2023-09-04 14:52:01
85阅读
架构综述通过对12306业务系统的需求分析之后可以发现,架构设计主要要解决的问题有:数据库高并发读写、有效的容灾机制与系统高可用、数据的安全以及对虚拟化云计算的支持。为解决上述问题,本架构以混合云为云端架构,采用读写分离的分布式架构设计数据库,使用hadoop与openstack统筹算力资源并组织、管理集群,同时利用双活容灾机制保障系统的高可用。具体架构如下图所示:所用到的与产品主要包括三个层面
每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题: 抢火车票! .. 虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。
第一代架构:双机热备模式2011 年 6 月 12 日,系统投入试运行,发售京津城际 列车车票;2011 年 9 月 30 日,发售全路动车组车票;2011 年底,发售全路列车车票,互联网正式成为铁 路新的售票渠道。互联网售票系统设计了缓存服务、用户管理、车票查询、订单及电子客票处理 等多个相对独立的业务分区,以及三级网络安全域, 分别是外网、内网和客票网,系统的体系架构如图 所示:数据库的维度:
作者: 绘你一世倾城今日知识点12306系统解析正文国庆将至,又到了外出旅游、返乡的高峰期,抢票又成了一个难题?话说这都9月中旬了,你们抢到票了吗?12306抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”
转载 2023-07-17 22:02:09
129阅读
春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可。但是,12306就不是那么简单了,具体复杂在哪里。123
大型高并发系统架构高并发的系统架构都会采用分布式集群部署,服务上层有着层层负载均衡,并提供各种容灾手段(双火机房、节点容错、服务器灾备等)保证系统的高可用,流量也会根据不同的负载能力和配置策略均衡到不同的服务器上。下边是一个简单的示意图:负载均衡简介上图中描述了用户请求到服务器经历了三层的负载均衡,下边分别简单介绍一下这三种负载均衡:1.OSPF(开放式最短链路优先)是一个内部网关协议(Inter
feed系统和火车票售卖系统是2个高访问高并发情况下具体很大挑战的系统。 在低访问,低并发的情况下feed系统会变的非常简单,数据模型和业务功能都比较容易设计和实现,主要的挑战就剩如何面对层出不穷的敏感词和花样百出的广告语。相比之下,火车票售卖系统在低并发时也很有趣,假设我是12306架构师,我会如何设计12306那。数据模型先将系统进行拆分,独立成用户,车票,下单3个系统,每个系统内部封闭成多
转载 2023-07-31 11:07:20
180阅读
1点赞
前言春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可。但是,12306就不是那么简单了,具体复杂在哪里,我
虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服务端架构,学习到了其系统设计上很多亮点,在这里和大家分享一下并模拟一个例子:如何
转载 2023-08-16 21:59:40
113阅读
  • 1
  • 2
  • 3
  • 4
  • 5