浅谈12306核心模型设计思路和架构设计

浅谈12306核心模型设计思路和架构设计

ID:32727911

大小:122.79 KB

页数:7页

时间:2019-02-15

浅谈12306核心模型设计思路和架构设计_第1页
浅谈12306核心模型设计思路和架构设计_第2页
浅谈12306核心模型设计思路和架构设计_第3页
浅谈12306核心模型设计思路和架构设计_第4页
浅谈12306核心模型设计思路和架构设计_第5页
资源描述:

《浅谈12306核心模型设计思路和架构设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅谈12306核心模型设计思路和架构设计刖旨春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后來自己想想,也确实如此。所以,很想挑战-下12306这个系统的核心领域模型的设计。-•般的电商网站,购买都是基于商晶的概念,每个商品有一定量的库存,用户的购买行为焰针对商品的。当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可。但是,12306就不是那么简单了,具体复杂在哪里,我下血会进一步分析。另外-个让我写这篇文章的原因,是我发现也许是

2、否是因为目前12306的核心领域模型设计的不够好,导致用户购票时要处理的业务逻辑异常复杂,维护数据一•致性的难度也儿百倍的上升,同时而对高并发的订票也难以支持很高的TPSo我觉得,越是复杂的业务,就越要重视业务分析,重视领域模型的抽象和设讣。如果不假思索,凭以往经验行爭,则很可能会被以往的设计经验先入为主,陷入死胡同。我发现技术人员往往更注重技术层血的解决方案,比如•上來就分析如何集群、如何负载均衡、如何排队、如何分库分表、如何用锁,如何用缓存等技术问题,而忽略了最根木的业务层而的思考,如分析业务、

3、领域建模。我认为越是复杂的业务系统,则越要设计一个健壮的领域模型。如果一个系统的架构我们设计错了,还有补救的余地,因为架构最终沉淀的只是代码,调整架构即可(一个系统的架构本身就是不断演进的):而如果领域模型设计错了,那耍补救的代价是非常大的,因为领域模型沉淀的是数据结构及其对应的大量数据,对任何一个大型系统,耍改核心领域模型都是成本申常高的。本文的重点不是在如何解决高并发的问题,而是希堪从业务角度去分析,12306的理想模型应该是怎么样的。网上口前谈12306的文章貌似都是千篇一律的只谈技术,不谈业

4、务分析和如何建模的。所以我想写一下自己的设计和大家交流学习。需求概述12306这个系统,核心耍解决的问题是网上售票。涉及到2个角色使川该系统:川户、铁道部。川户的核心诉求是査询余票、购票;铁道部的核心诉求是售票。购票和售票其实是一个场景,对用户來说是购票,对铁道部來说是售票。因此,我们要设计一个在线的网站系统,解决用户的查询余票、购票,以及铁道部的售票这3个核心诉求。看起來,这3个场景都是怖I绕火车票展开的。査询余票:用户输入出发地、H的地、出发日三个条件,查询可能存在的车次,用户可以看到每个车次经

5、过的站点劣称,以及毎种座位的余票数量。购票:购票分为订票和付款两个阶段,木文垂点分析订票的模型设计和实现思路。其实还有很筈其他的需求,比如给不同的车次设运销售座位数配额,以及不同的区段设置不同的限额。但相比前而两个需求来说,我觉得这个需求相对次要一些。需求分析确实,12306也是一个电商系统,而且看起來商品就焰票了。因为如果把一张票看成焰一个商品,那购票就类似于购买商品,然后每张票都有库存,商品也有库存的概念。但是如果我们仔细想想,会发现12306要复杂很名,因为我们无法预先确定好所有的票,如杲非要

6、确定,那只能通过穷举法了。我们以北京西到深圳北的G71车次高铁为例(这里只考虑南下的方向,不考虑深圳北到北京西的,那是另外一个车次,叫G72),它有17个站(北京西是01号站,深圳北是17号站),3种座位(商务、一等、二等)。表面看起來,这不就是3个商品吗?G7I商务座、G71一等座、G71二等座。大部分轻易喷12306的技术人员(包搖某些中等规模公司的专家、CTO)就是在这里栽第一个跟头的。实际上,G71有136*3=408种商品(408个SKU),怎么算来的?如下:如果卖北京西始发的,有16种卖

7、法(因为后而有16个站),北京西到:保定、石家庄、郑州、武汉、长沙、广州、虎门、深圳。。。。都是一个独立的商品,同理,石家庄上车的,有15种下车的可能,以此类推,单以上下车的站來计算,有136种票:16+15+14....+2+1=136。每种票都有3种座位,一共是408个商品。为了方便后面的讨论,我们先明确一下票是什么?一张票的核心信息包括:出发时间、岀发地、目的地、车次、座位号。持有票的人就拥有了一个凭证,该凭证表示持有它的人可以坐某个车次的某个座位号,从某地到某地。所以,一张票,对用户來说是一

8、个凭证,对铁道部來说是一个承诺;那对系统來说是什么呢?不知道。这就是我们要分析业务,领域建模的原因,我们再继续思考吧。明口了票的核心信息后,我们再看看G71这个车次的髙铁,可以卖多少张票?讨论前先说明一下,一辆火车的物理座位数(站票也可以看成是一种廉位,因为站票也有数最配额)不等于可用的最大配合。所有的物理座位不可能都通过12306网站來销售,而是只会销售一部分,比如40%。其余的还是会通过线下的方式销伟。不仅如此,可能有些站点上车的人会比较多,有些比较少,所以我们还

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。