北京-喜<-> 15:59:20
雖然難用,但12306面臨的業(yè)務(wù)場(chǎng)景復(fù)雜度可能是世界之最. 先背書(shū):文章里是內(nèi)容我不是都贊同哈地回。 有興趣一起討論下。
北京-mrman(-) 16:05:18
整體表現(xiàn)上現(xiàn)在已經(jīng)足夠厲害了法希。
北京-luke(-) 16:06:12
靜態(tài)final常量 有時(shí)候不會(huì)實(shí)例化類的
成都-梅小西(-) 16:07:01
喜神你說(shuō)哪里不贊同了啊
北京-喜<-> 16:07:25
第一點(diǎn) 標(biāo)題有誤導(dǎo)
北京-luke(-) 16:07:27
靜態(tài)方法不需要實(shí)例
杭州-絕之(-) 16:07:31
主要是個(gè)運(yùn)籌學(xué)問(wèn)題悠反。
北京-喜<-> 16:07:35
所有的列車(chē)在線銷(xiāo)售 都是這個(gè)復(fù)雜度, 并不是中國(guó)的-
成都-梅小西(-) 16:08:01
航班呢
天津-Michael(-) 16:08:07
中國(guó)的問(wèn)題是人太多
北京-喜<-> 16:08:10
如果涉及拼車(chē)嗤军,那么中國(guó)因?yàn)檐?chē)次多注盈,那么只是量級(jí)的問(wèn)題
北京-w(-) 16:08:15
西神 航班中途不下車(chē)
北京-喜<-> 16:08:19
問(wèn)題的復(fù)雜度是一個(gè)啊
北京-w(-) 16:08:31
中轉(zhuǎn)少的多
北京-喜<-> 16:08:38
航班的比不上這個(gè)
成都-過(guò)客(-) 16:08:39
看的腦殼痛
河南-Error<-> 16:08:57
復(fù)雜度和規(guī)模是兩個(gè)概念。叙赚。
廣州-揚(yáng)帆(-) 16:11:13
火車(chē)的復(fù)雜度比航班大很多的
杭州-絕之(-) 16:11:14
我記得哪里說(shuō)過(guò)-其實(shí)就是預(yù)先把票分區(qū)間老客,根本不用聚合根那么復(fù)雜
廣州-揚(yáng)帆(-) 16:14:10
超高并發(fā)下,不停的買(mǎi)票退票中途轉(zhuǎn)車(chē)算起來(lái)就不容易了纠俭。
成都-梅小西(-) 16:17:37
我一直覺(jué)得火車(chē)票的存儲(chǔ)沿量,更新,非常復(fù)雜, 還得保持高并發(fā), 比普通的電商秒殺還難吧
北京-喜<-> 16:18:11
最大全集是固定的冤荆,庫(kù)存之間的交集關(guān)系是固定的,變化的是美團(tuán)的銷(xiāo)售狀況, 變化的是美天的銷(xiāo)售狀況
北京-喜<-> 16:22:35
還得保持高并發(fā) 這個(gè)看策略, 搞清楚庫(kù)存索引結(jié)構(gòu)朴则,才能談這個(gè)問(wèn)題。 因?yàn)檫@個(gè)時(shí)候才知道安全區(qū)到底是什么, 控制策略有2種:1種是全部悲觀類钓简, 1種排隊(duì)控制+輪詢
成都-梅小西(-) 16:23:57
排隊(duì)控制乌妒。。外邓。撤蚊。類似隊(duì)列了吧, mq
北京-喜<-> 16:24:11
其實(shí)就是同步還是異步, 整體還是強(qiáng)一致性, 同步就是 所有的庫(kù)存都commit 成功 = 下單成功
北京-luke(-) 16:24:50
那就是分布式事務(wù), 我想問(wèn)一下 分布式事務(wù) 完全的強(qiáng)一致 用什么做?
廣州-揚(yáng)帆(-) 16:25:31
只能說(shuō)原始庫(kù)存是不變的损话,賣(mài)一張或退一張票就不是簡(jiǎn)單的少一張票或多一張票侦啸,可能涉及到幾張票的問(wèn)題的槽唾。在超高并發(fā)的情況下要算出來(lái)賣(mài)出去難度非常大了
北京-喜<-> 16:25:37
異步就是 每個(gè)庫(kù)存有自己的commit 隊(duì)列,前臺(tái)下單等于往各個(gè)庫(kù)存隊(duì)列加了commit任務(wù) 光涂,前臺(tái)輪詢所有的commit隊(duì)列狀態(tài)庞萍,全部完成=下單成功, 關(guān)系是提前算好的, 不需要?jiǎng)討B(tài)計(jì)算
北京-w(-) 16:27:32
喜神,我有個(gè)問(wèn)題啊忘闻,比如有的同事買(mǎi)全稱票就能買(mǎi)到钝计,買(mǎi)這趟車(chē)的區(qū)間票就買(mǎi)不到,是不是可以說(shuō)明他是有一部分提前規(guī)劃好的呢
深圳–Rw (-) 16:27:53
這個(gè)我這次碰到了, 比如 我昨天能買(mǎi) 中間票的區(qū)間 ,結(jié)果今天 就查不到中間票的區(qū)間的 車(chē)次查詢不出來(lái), 但是實(shí)際上 票 我買(mǎi)了 也是有效的
北京-喜<-> 16:28:46
你想下庫(kù)存本質(zhì)上怎么分配和歸類的, 你的問(wèn)題是銷(xiāo)售寬度的問(wèn)題
深圳-平凡(-) 16:29:03
如果退票齐佳,不是涉及到庫(kù)存重新計(jì)算了嗎私恬?
北京-喜<-> 16:30:22
退票和下單 沒(méi)區(qū)別啊
深圳-平凡(-) 16:33:51
看位置是預(yù)先固定好了,還是可動(dòng)態(tài)計(jì)算的炼吴。A-B-C-D本鸣,買(mǎi)了一張A-D的,那會(huì)影響B(tài)-C C-D 區(qū)間的庫(kù)存缺厉。
南京-wyy(-) 16:34:16
還有a-c和b-d的也影響了
北京-喜<-> 16:34:55
這個(gè)關(guān)系是固定的啊, 在車(chē)次和城市確認(rèn)之后永高,這個(gè)關(guān)系就確認(rèn)了, 和用戶買(mǎi)一段沒(méi)關(guān)系。又不是用戶引發(fā)的, 比如北京到大連的 K681提针,這個(gè)車(chē)次有多少個(gè)庫(kù)存組合,是固定的曹傀。每天如此.
南京-wyy(-) 16:35:57
喜哥這意思是辐脖,A-D的票不會(huì)拆開(kāi)賣(mài)?
北京-喜<-> 16:36:02
每天的銷(xiāo)售情況是變化的
北京-w(-) 16:36:27
那如果某個(gè)段不夠了 他會(huì)調(diào)整嗎
成都-梅小西(-) 16:36:49
對(duì)皆愉,會(huì)調(diào)整么嗜价。
北京-喜<-> 16:37:11
成都-梅小西(-) 16:37:14
每個(gè)中間站到中間站的票,都是提前預(yù)配好的么
深圳-rubin(-) 16:37:16
是指一開(kāi)始就規(guī)定了途徑A-D的多少?gòu)埰蹦宦緼-B多少久锥?
北京-喜<-> 16:37:29
所有的庫(kù)存都是預(yù)先配置的
深圳-rubin(-) 16:37:32
受教了
北京-喜<-> 16:37:41
這個(gè)是車(chē)次的維度的
成都-梅小西(-) 16:37:47
哦。原來(lái)是這樣异剥,不會(huì)后面再計(jì)算啊
北京-哇咔咔(-) 16:37:49
如果要?jiǎng)討B(tài)計(jì)算瑟由,假如有且只有一趟車(chē)的票可以賣(mài),北京到上海冤寿,途經(jīng)濟(jì)南歹苦。我要買(mǎi)去濟(jì)南的票,就要鎖住從北京到濟(jì)南每個(gè)站作為上車(chē)站的所有票督怜,這個(gè)代價(jià)太大
南京-wyy(-) 16:37:51
@北京-喜 這就變成了普通的電商系統(tǒng)了
北京-喜<-> 16:37:59
和在線銷(xiāo)售殴瘦,還是車(chē)站線下買(mǎi)沒(méi)關(guān)系
深圳-平凡(-) 16:38:06
看業(yè)務(wù)訴求吧,部分庫(kù)存允許動(dòng)態(tài)計(jì)算能根據(jù)實(shí)際坐車(chē)需求進(jìn)行調(diào)整号杠,更合理
北京-喜<-> 16:38:22
挺多是會(huì)按銷(xiāo)售渠道蚪腋、終端丰歌,去劃撥庫(kù)存在哪個(gè)端售賣(mài), 不需要?jiǎng)討B(tài)劃撥
北京-哇咔咔(-) 16:38:40
線下賣(mài)票也是這么干的,按車(chē)次和站段分票池, 每個(gè)票池有固定數(shù)量的票
北京-luke(-) 16:38:43
現(xiàn)實(shí)中的站票這個(gè)怎么算進(jìn)去呢
北京-喜<-> 16:38:49
每天最大庫(kù)存售賣(mài)量 就是每個(gè)人都只做1站
北京-哇咔咔(-) 16:38:59
隨著運(yùn)營(yíng)會(huì)調(diào)整屉凯,但是不頻繁
北京-喜<-> 16:39:04
最小售賣(mài)量就是 每個(gè)人 都從起始點(diǎn)坐到終點(diǎn), 所有的庫(kù)存 窮舉出來(lái)
廣州-小護(hù)士<-> 16:39:28
路徑越長(zhǎng)立帖,售票庫(kù)存越少
北京-哇咔咔(-) 16:39:41
很多時(shí)候車(chē)上明明還能站人,但是無(wú)座票也不賣(mài)了
深圳-平凡(-) 16:40:03
@北京-喜 你說(shuō)的是文章里的窮舉神得,對(duì)應(yīng)區(qū)間減1厘惦?
北京-喜<-> 16:40:16
就是N的階乘...庫(kù)存的直接一級(jí)維度 是 起始站 + 抵達(dá)站, 通過(guò)這2個(gè)值,能檢索他的所有交集庫(kù)存集合,
這個(gè)關(guān)系都是不會(huì)變的哩簿,預(yù)先固化好的
廣州-小護(hù)士<-> 16:39:28
路徑越長(zhǎng)宵蕉,售票庫(kù)存越少
北京-哇咔咔(-) 16:39:41
很多時(shí)候車(chē)上明明還能站人,但是無(wú)座票也不賣(mài)了
深圳-平凡(-) 16:40:03
@北京-喜 你說(shuō)的是文章里的窮舉节榜,對(duì)應(yīng)區(qū)間減1羡玛?
北京-喜<-> 16:40:16
就是N的階乘...
北京-喜<-> 16:41:00
庫(kù)存的直接一級(jí)維度 是 起始站 + 抵達(dá)站, 通過(guò)這2個(gè)值,能檢索他的所有交集庫(kù)存集合, 這個(gè)關(guān)系都是不會(huì)變的宗苍,預(yù)先固化好的
北京-(-) 16:42:16
這樣做起來(lái)簡(jiǎn)單啊 預(yù)先配置 售罄為止
北京-luke(-) 16:42:33
現(xiàn)實(shí)中也應(yīng)該是這樣的
北京-喜<-> 16:42:35
是因?yàn)檫@個(gè)關(guān)系不會(huì)變
北京-C_C(-) 16:42:37
座位是一定的
北京-喜<-> 16:42:42
所有中間加了1個(gè)車(chē)站, 重新刷一下就好了稼稿。 刷新算法是固定的, 輸入N -> 輸出所有庫(kù)存組合
北京-chris(-) 16:43:06
這樣就影響到公司盈利
北京-luke(-) 16:44:13
座位和車(chē)站區(qū)間也是關(guān)聯(lián)的吧
天津-Michael(-) 16:44:19
1級(jí)檢索車(chē)次,2級(jí)檢索區(qū)間庫(kù)存
北京-喜<-> 16:44:23
這個(gè)是最直接的關(guān)系, 還有一些別的關(guān)系, 庫(kù)存和座位之間是關(guān)聯(lián)的, 座位 有車(chē)廂號(hào)讳窟、座位等級(jí)
北京-luke(-) 16:45:06
也就是說(shuō) 座位號(hào)其實(shí)是和車(chē)站區(qū)間是關(guān)聯(lián)的 這都是預(yù)先設(shè)計(jì)好的
北京-喜<-> 16:45:14
對(duì)的
北京-喜<-> 16:45:25
這個(gè)是這條線路開(kāi)通的時(shí)候让歼,就確認(rèn)的啊, 和售賣(mài)側(cè) 還沒(méi)關(guān)系呢, 在-有之前, 難道站點(diǎn)直接買(mǎi)票 不是這樣么?
北京-luke(-) 16:46:14
對(duì) 就是這樣的 現(xiàn)實(shí)中就是如此
北京-喜<-> 16:46:21
以為這個(gè)是-設(shè)計(jì)出來(lái)的丽啡?
北京-luke(-) 16:46:28
站票也會(huì)和車(chē)次區(qū)間關(guān)聯(lián)吧
北京-喜<-> 16:46:37
站票也要關(guān)聯(lián)
北京-luke(-) 16:46:41
那就對(duì)了
北京-喜<-> 16:46:47
這個(gè)就是索引結(jié)構(gòu) 和 聚合維度的事情, 落地其實(shí)是雙向檢索, 有人說(shuō)自己的抽象概括惦费、業(yè)務(wù)梳理确虱、理解比較好的時(shí)候羊精,可以問(wèn)他這個(gè)問(wèn)題
杭州-光明消逝(-) 16:49:19
車(chē)票的算法,想想都頭疼,各種什么二個(gè)人一起買(mǎi),三個(gè)人一起買(mǎi),優(yōu)先匹配短程買(mǎi)過(guò)不沖突的
北京-喜<-> 16:49:33
沒(méi)啥啊, 就是給什么庫(kù)存而已, 他們之間是庫(kù)存寬度是一致的
北京-luke(-) 16:49:57
其實(shí)現(xiàn)實(shí)的做法挺簡(jiǎn)單的
北京-喜<-> 16:49:58
起始站和抵達(dá)站 是一個(gè)啊, 分配算法 和 庫(kù)存結(jié)構(gòu)沒(méi)什么關(guān)系啊, 分配算法 是看已銷(xiāo)售情況赦邻、歷史情況、收益模型什么的坑雅, 決定給什么庫(kù)存而已, 跟庫(kù)存自身的結(jié)構(gòu)辈挂,沒(méi)什么直接關(guān)系
上海-阿貴(-) 16:52:06
現(xiàn)在 提前搶票 是按照什么來(lái)的, 不同軟件 搶票 速度 是不是不一樣
北京-C_C(-) 16:52:11
站點(diǎn):A B C D 座位:1 2 你怎么存
杭州-光明消逝(-) 16:52:27
我覺(jué)得,庫(kù)存的依據(jù)是座位.[是的]
北京-喜<-> 16:52:46
搶票和這個(gè)沒(méi)關(guān)系,搶票是各個(gè)公司用抓取抓的-
北京-luke(-) 16:53:09
不同的座位對(duì)應(yīng)不同的乘車(chē)區(qū)間 比如A站到B站的座位為一車(chē)1,2,3號(hào)
北京-喜<-> 16:53:28
但是是2套體系啊
山東-仲夏(-) 16:53:31
站票庫(kù)存依據(jù)什么
北京-喜<-> 16:53:33
之間只是配對(duì)關(guān)系
北京-luke(-) 16:53:46
肯定都是抓取-的 不可能自己去直接搞票
北京-喜<-> 16:53:48
并不影響 座位體系和庫(kù)存體系的分開(kāi)設(shè)計(jì)
成都-無(wú)名(-) 16:54:06
-的tps達(dá)到多少了裹粤?
北京-喜<-> 16:54:08
座位 X 庫(kù)存, 庫(kù)存 是按站點(diǎn) 窮舉的
杭州-光明消逝(-) 16:55:19
結(jié)構(gòu)應(yīng)該是 A1座位, 然后1~10站10個(gè)區(qū)間,買(mǎi)一A1座票就是 57區(qū)間被占用,還可以用14,8~10
北京-luke(-) 16:55:21
@北京-C_C 我的理解是是的 只是座位號(hào)可能變成456
杭州-bz-java(-) 16:55:51
庫(kù)存的單位是 車(chē)號(hào)-班次-站點(diǎn)-座位的元祖更科學(xué)點(diǎn)吧..
北京-C_C(-) 16:56:43
那如果我買(mǎi)了其中的一段终蒂,那么所有的組合都得重新更新一遍?
北京-liunx(-) 16:56:50
不會(huì)
北京-luke(-) 16:57:11
不用重新排列 都是之前就排列好了
北京-C_C(-) 16:57:17
什么叫先分配
北京-liunx(-) 16:57:21
給這一段10張票蛹尝,這一段只有10張
杭州-bz-java(-) 16:57:34
我上面說(shuō)的是自己的想法 操作起來(lái)更簡(jiǎn)單點(diǎn)
北京-luke(-) 16:57:48
@北京-liunx 我也是這么理解的
北京-喜<-> 16:57:49
庫(kù)存就是座位的啊
杭州-bz-java(-) 16:57:51
車(chē)票的話就變成賣(mài)商品組合了...
北京-喜<-> 16:58:01
你說(shuō)的是 檢索方式 和 聚合維度, 沒(méi)商品什么事, 理論上不需要商品模型
杭州-bz-java(-) 16:58:33
我定義的是庫(kù)存, 我自己的想法
北京-liunx(-) 16:58:43
那那種包含關(guān)系怎么分配票數(shù)呢后豫?
北京-luke(-) 16:59:04
估計(jì)是根據(jù)經(jīng)驗(yàn)
北京-liunx(-) 16:59:40
就比如 A到E B到D 因?yàn)锳E數(shù)量要包括BD的數(shù)量
北京-喜<-> 16:59:49
AE有自己的啊, 只是銷(xiāo)售出去之后,需要刷級(jí)聯(lián)的庫(kù)存
北京-liunx(-) 17:00:12
那bd的數(shù)量也不能大于ae吧突那。
北京-luke(-) 17:00:16
@北京-liunx A-E的是單獨(dú)的一系列座位 B-D是單獨(dú)的另一系列座位 不沖突 我的理解
北京-喜<-> 17:00:17
級(jí)聯(lián) = 有交集, A-E會(huì)有它自己的級(jí)聯(lián)聯(lián)系, 這個(gè)都是不會(huì)變的挫酿,車(chē)次和車(chē)站確認(rèn)之后,都確認(rèn)的, 咋就理解不了這個(gè)了愕难?A-E 會(huì)影響 A-E之間的所有組合
北京-luke(-) 17:02:01
我當(dāng)年在東北坐火車(chē)時(shí) 買(mǎi)到站票的話 都是碰運(yùn)氣看有沒(méi)有座位 所以感覺(jué)不同區(qū)間之間應(yīng)該沒(méi)聯(lián)系
北京-liunx(-) 17:02:05
少想了座位早龟。
北京-喜<-> 17:02:07
這個(gè)關(guān)系是固定的惫霸,車(chē)次上線售賣(mài)的時(shí)候,就確認(rèn)的, 你買(mǎi)的哪一段葱弟,先更新這一段的庫(kù)存, 然后去關(guān)系里檢索被影響的庫(kù)存集壹店, 都刷一下, 對(duì)于同一個(gè)座位,可能別人在買(mǎi)另外一段芝加,和你其實(shí)沖突了
北京-liunx(-) 17:03:14
恩恩硅卢。
北京-喜<-> 17:03:15
如果人家買(mǎi)G-I , 其實(shí)和你也沒(méi)關(guān)系
北京-luke(-) 17:03:30
對(duì) 但這個(gè)座位屬于不同區(qū)間段 你下車(chē)了 他就上車(chē) 其實(shí)不沖突
北京-喜<-> 17:03:31
這個(gè)就是前面說(shuō)的 安全區(qū), 庫(kù)存結(jié)構(gòu)想不清楚的話藏杖。實(shí)際沖突的到底是什么将塑,也就想不清楚, 然后 現(xiàn)在-的拼車(chē),其實(shí)就是基于這個(gè)雙向庫(kù)存結(jié)構(gòu)的, 按車(chē)次和站點(diǎn) 固化下的庫(kù)存結(jié)構(gòu), 庫(kù)存和座位之間的關(guān)系, 按車(chē)次蝌麸、站點(diǎn)点寥、座位等級(jí) -> 座位 的關(guān)系, 站票只是個(gè)座位等級(jí), 可以在信息上設(shè)計(jì)一個(gè)虛擬座位, 座位的物理信息里 有車(chē)廂 和 二維結(jié)構(gòu)(橫排和豎排来吩,比如 3A)
北京-luke(-) 17:08:36
虛擬信息就是這個(gè)座位屬于哪個(gè)區(qū)間段 比如A-B B-C I-G這類的 我的理解
北京-喜<-> 17:08:46
不是, 因?yàn)檎酒笔菦](méi)有實(shí)際的物理座位的, 在出票的信息上敢辩。站票沒(méi)有二維信息而已. 庫(kù)存結(jié)構(gòu)上,是一樣的.
北京-luke(-) 17:09:33
對(duì) 站票是沒(méi)有的 但要保證每個(gè)區(qū)間段內(nèi) 站票數(shù)量+坐票數(shù)量 不能超過(guò)負(fù)載
廣州-小護(hù)士<-> 17:09:47
站票只有車(chē)廂容量弟疆?
北京-喜<-> 17:10:05
所以前面說(shuō)的 買(mǎi)全程有戚长,買(mǎi)中間沒(méi)有的問(wèn)題, 都是銷(xiāo)售策略和庫(kù)存調(diào)撥的問(wèn)題, 不是庫(kù)存結(jié)構(gòu)的問(wèn)題,
這個(gè)是在庫(kù)存結(jié)構(gòu)之外,又包了一層體系 是另外一個(gè)事
北京-luke(-) 17:11:31
不過(guò)有時(shí)候也不這么嚴(yán)格 我從我對(duì)象她家回北京經(jīng)常就是站票 都是上車(chē)了補(bǔ)票 人數(shù)不是特多的話 不會(huì)超載
北京-喜<-> 17:11:47
比如超過(guò)5個(gè)站點(diǎn)怠苔,就不生成哪種庫(kù)存
北京-喜<-> 17:12:00
比如不生成就1個(gè)臨界站點(diǎn)的, 3個(gè)站點(diǎn)以上跨度才生成, 這些都是策略
北京-luke(-) 17:12:51
其實(shí)你們?nèi)ヨF路里實(shí)地觀察一段就知道了 前提是有機(jī)會(huì)進(jìn)去 , 現(xiàn)實(shí)中的做法比想象的要簡(jiǎn)單
北京-喜<-> 17:14:11
有人整理么历葛,我可以搞個(gè)專題分享下
北京-(-) 17:15:21
其實(shí)網(wǎng)上好多人都討論過(guò)-的業(yè)務(wù)和解決方案 但是感覺(jué)想的還是簡(jiǎn)單了
北京-喜<-> 17:21:17
今天的內(nèi)容如果有人整理的話,我可以復(fù)用一部分
北京-喜<-> 17:21:33
沒(méi)人整理的話 我就要重頭寫(xiě)嘀略。這個(gè)我以前沒(méi)專門(mén)整理過(guò)
北京-哇咔咔(-) 17:28:11
買(mǎi)一個(gè)站段的一張票,要刷一遍跟這一段有交集的所有站段的庫(kù)存乓诽,這樣會(huì)不會(huì)有點(diǎn)慢爸难颉?[只是個(gè)引用關(guān)系啊, -買(mǎi)票的RT高鸠天,就是因?yàn)檫@個(gè), 有2種刷新策略 讼育,各有優(yōu)劣, 我在寫(xiě)會(huì)員業(yè)務(wù)的本質(zhì),這個(gè)寫(xiě)完稠集,才能寫(xiě)鐵路銷(xiāo)售 ]
杭州-bz-java(-) 17:33:19
這就是設(shè)計(jì)和實(shí)現(xiàn)上的區(qū)別了..
上面說(shuō)程序員會(huì)把事情想復(fù)雜有一定的原因是沒(méi)有/不知道很好的實(shí)現(xiàn)方案
被強(qiáng)行圈到了自己熟悉的架構(gòu)/框架里去回答了...
北京-行知(-) 17:34:45
是啊奶段,設(shè)計(jì)階段不應(yīng)該去考慮實(shí)現(xiàn)細(xì)節(jié),這些是落地的時(shí)候才去考慮的
北京-哇咔咔(-) 21:40:46
經(jīng)停站剥纷,包括上車(chē)站和途經(jīng)站痹籍,不包括下車(chē)站,因?yàn)槌丝筒粫?huì)占用下車(chē)站的座位
假設(shè)有N個(gè)車(chē)站晦鞋,經(jīng)停站是始發(fā)站的一共N-1種站點(diǎn)組合蹲缠,終點(diǎn)站的組合數(shù)是0棺克,經(jīng)停站是第i站的組合數(shù)是i*(N-i),0<i<=N
給一個(gè)車(chē)次的所有站從始發(fā)站編號(hào)线定,作為X軸娜谊,組合數(shù)是Y軸,繪制曲線斤讥,會(huì)形成一個(gè)等腰三角形(如果站數(shù)是偶數(shù)纱皆,就是等腰梯形,終點(diǎn)站不算在站數(shù)內(nèi))
每一個(gè)組合就是一個(gè)站段芭商,就是一種售票的可能派草,可以把這一個(gè)站段想象成一個(gè)始發(fā)站是站段開(kāi)頭,終點(diǎn)站是站段結(jié)尾的虛擬列車(chē)
以始發(fā)站為例蓉坎,一共N-1種組合澳眷,就要構(gòu)造N-1個(gè)虛擬的列車(chē)
但是這些虛擬列車(chē)是可以重用的,這些虛擬列車(chē)覆蓋的所有經(jīng)停站都可以重用它們
票池維度包含車(chē)次和等級(jí)(軟臥 硬臥 商務(wù)座 一等座 二等座 無(wú)座)蛉艾,無(wú)座可以認(rèn)為是虛擬的座位
臥鋪和座位編號(hào)可以是車(chē)廂編號(hào)+鋪號(hào)/座號(hào)
要買(mǎi)某個(gè)站段的票钳踊,就是買(mǎi)這個(gè)站段對(duì)應(yīng)的虛擬列車(chē)的庫(kù)存
為每個(gè)站定義一個(gè)版本號(hào),一個(gè)站作為經(jīng)停站的所有站段庫(kù)存數(shù)發(fā)生變化這個(gè)版本號(hào)就+1
這樣就把一個(gè)需要頻繁刷新庫(kù)存數(shù)的操作減少到需要對(duì)經(jīng)停站相關(guān)的庫(kù)存數(shù)的操作
要買(mǎi)一張票勿侯,首先把相應(yīng)站段的每一站作為經(jīng)停站的所有虛擬列車(chē)指定等級(jí)的未售出票和未鎖定票求交集拓瞪,記為G
同時(shí)購(gòu)買(mǎi)同一個(gè)車(chē)次的票的推入同一個(gè)隊(duì)列,M個(gè)車(chē)次有且只有M個(gè)隊(duì)列助琐,隊(duì)列內(nèi)串行操作
從G中選擇第一個(gè)位置祭埂,鎖定,進(jìn)入支付流程兵钮,處理隊(duì)列中的下一個(gè)請(qǐng)求
支付失敗或超時(shí)蛆橡,解鎖
支付成功座位被售出
假定有key是stations:上車(chē)站:下車(chē)站:車(chē)次:等級(jí),可以從這個(gè)key查到指定站段掘譬、車(chē)次泰演、等級(jí)的每一個(gè)經(jīng)停站
假定有key是trains:經(jīng)停站:車(chē)次:等級(jí),可以從這個(gè)key指定經(jīng)停站葱轩、車(chē)次睦焕、等級(jí)的每一個(gè)虛擬列車(chē)
假定有key是train:上車(chē)站:下車(chē)站:車(chē)次:等級(jí),可以從這個(gè)key查到每一個(gè)座位
北京-喜<-> 22:04:14
@北京-哇咔咔 考慮數(shù)據(jù)模型和關(guān)系的時(shí)候靴拱,不考慮存儲(chǔ)的垃喊。 庫(kù)存那里可以不用虛擬列車(chē),座位體系是對(duì)的, 模型只考慮關(guān)系和檢索可達(dá)
北京-哇咔咔(-) 22:04:56
未售出票的交集怎么求, 北京-喜<-> 22:05:23
其實(shí)只有幾個(gè)點(diǎn):
1.庫(kù)存和座位之間的關(guān)系
2.庫(kù)存體系結(jié)構(gòu)
3.座位體系結(jié)構(gòu)
4.庫(kù)存其實(shí)是可以發(fā)放的
5.銷(xiāo)售階段的購(gòu)買(mǎi)物到底是什么袜炕,以及庫(kù)存控制方案
交集是車(chē)次決定的.
北京-哇咔咔(-) 22:06:01
我想的是一個(gè)座位按一個(gè)sku算, 出票未出票是座位狀態(tài)+庫(kù)存狀態(tài), 一個(gè)座位有很多庫(kù)存池本谜,對(duì)應(yīng)站點(diǎn)賣(mài)的直接就是座位, 不需要設(shè)計(jì)商品
杭州-Freedom(-) 22:07:13
我咋覺(jué)得,是個(gè)帶數(shù)量的有向圖
北京-哇咔咔(-) 22:07:47
我想過(guò)用圖計(jì)算妇蛀,覺(jué)的太復(fù)雜
北京-喜<-> 22:07:49
我說(shuō)幾個(gè)點(diǎn)的事情吧耕突,有助于大家切分信息
1.列車(chē)造好之后笤成,座位物理信息已經(jīng)完成了
2.車(chē)次設(shè)計(jì)好之后,庫(kù)存結(jié)構(gòu)和各種售賣(mài)組合 已經(jīng)完畢了, k車(chē)和d車(chē) 到底差別在哪 大家可以想一想.同樣的起始站 終點(diǎn)站眷茁,和中途站的k和和動(dòng)車(chē).
3.座位和庫(kù)存的關(guān)系炕泳。是在xx列車(chē)跑xx線路的時(shí)候確定的。依賴1和2.
上海-剎那芳華(-) 22:10:25
北京-徐州東-南京南-上海
如果徐州東-南京南完了 北京到上海是不是頁(yè)完了上祈?
杭州-七月(-) 22:10:51
不是這樣想把
杭州-受氣包(-) 22:10:55
不是, 會(huì)預(yù)留北京到上海的票
北京-喜<-> 22:11:24
這個(gè)是庫(kù)存調(diào)撥的事情, 列車(chē)培遵、座位、線路登刺、車(chē)次, 基本就這3-4個(gè)數(shù)據(jù)結(jié)構(gòu)
杭州-Freedom(-) 22:13:11
帶數(shù)量的有向圖籽腕,其中任何一個(gè)線段數(shù)量達(dá)到總座位數(shù),那一段路程就不能售賣(mài)
北京-喜<-> 22:13:13
今天已經(jīng)說(shuō)過(guò)了, 車(chē)站的柜臺(tái)售票也是用的這一套, 根本不是-設(shè)計(jì)的, -是處理互聯(lián)網(wǎng)流量的
杭州-受氣包(-) 22:14:01
@北京-喜 然而作為火車(chē)站售票員的閨蜜屁都不知道
北京-喜<-> 22:14:05
比柜臺(tái)流量和并發(fā)度大而已
上海-剎那芳華(-) 22:14:07
我一直挺好奇纸俭,為啥-自己不做云皇耗,他這個(gè)可比雙11和黑5難度大多了啊
北京-喜<-> 22:14:22
后臺(tái)的結(jié)構(gòu)支撐是一樣的。網(wǎng)絡(luò)和柜臺(tái)沒(méi)區(qū)別, 難度不大, 沒(méi)想清楚而已, 他現(xiàn)在的拼車(chē)確實(shí)-獨(dú)有的, 柜臺(tái)沒(méi)這個(gè)模式, 這里是把庫(kù)存追加了一個(gè)維度因子揍很,到站時(shí)間, 這個(gè)到時(shí)候一起說(shuō)下
杭州-cc愛(ài)冒險(xiǎn)(-) 22:16:31
-郎楼,馬云說(shuō)了,這個(gè)爛攤子他免費(fèi)接手≈匣冢現(xiàn)在用的就是阿里云
北京-喜<-> 22:16:53
-原本爛, 不是人家的模型爛, 只是沒(méi)有互聯(lián)網(wǎng)流量應(yīng)對(duì)經(jīng)驗(yàn)而已, 模型是復(fù)用的柜臺(tái)的
杭州-受氣包(-) 22:18:06
@上海-剎那芳華 但是如果按照你說(shuō)的呜袁,中間票賣(mài)完了,全程票就買(mǎi)不了了简珠,那黑牛不是只要買(mǎi)一站票就把火車(chē)站的票全給占了
北京-哇咔咔(-) 22:18:36
他得包車(chē)才行
北京-喜<-> 22:18:49
庫(kù)存結(jié)構(gòu)和庫(kù)存狀態(tài)是2件事啊, 有些庫(kù)存可以不上架售賣(mài). 按照歷史訂單阶界、站點(diǎn)規(guī)模和收益模型, 決定這個(gè)點(diǎn)的庫(kù)存結(jié)構(gòu),上不上線. 小站:聋庵?比如鄉(xiāng)鎮(zhèn)站點(diǎn)膘融。 它的庫(kù)存結(jié)構(gòu)和其他城市沒(méi)區(qū)別, 但是覆蓋范圍,是可以挑撥的, 有個(gè)最大構(gòu)成和售賣(mài)構(gòu)成的問(wèn)題, 庫(kù)存的體系結(jié)構(gòu)和最大分類構(gòu)成, 但不表示全部都拿上去賣(mài), 按站點(diǎn)分配的時(shí)候祭玉,可以設(shè)置的.
北京-行知(-) 22:26:28
有個(gè)問(wèn)題 如果剩下一個(gè)全程的票 但是多個(gè)人要買(mǎi)分段的票 組合起來(lái)正好是全程的 此時(shí)到底應(yīng)該不應(yīng)該賣(mài)給他
北京-哇咔咔(-) 22:26:56
當(dāng)然賣(mài)了, 這個(gè)就是座位和庫(kù)存的關(guān)系
北京-喜<-> 22:27:02
你好好想想
杭州-受氣包(-) 22:27:36
問(wèn)題是系統(tǒng)不知道第一個(gè)分段客戶來(lái)的時(shí)候會(huì)不會(huì)有后面幾個(gè)剛好匹配的分段客戶啊
北京-喜<-> 22:27:40
這個(gè)座位賣(mài)完了真的就沒(méi)票了么, 隨所以沒(méi)有最優(yōu)解托启,跟輸入有關(guān)系
成都-Noexcuse(-) 22:28:08
站票
北京-喜<-> 22:28:16
不是站票
北京-哇咔咔(-) 22:28:17
下一段的還有票,但是包含這一段的沒(méi)有了
杭州-受氣包(-) 22:28:19
會(huì)不會(huì)賣(mài)了這個(gè)分段客戶攘宙,后面剛好來(lái)個(gè)人要全段票
北京-喜<-> 22:28:28
座位是多站售賣(mài)的
杭州-受氣包(-) 22:28:28
這時(shí)候又沒(méi)有了
北京-行知(-) 22:28:35
所以 這個(gè)其實(shí)是沒(méi)有最優(yōu)解的
南寧-為兩餐(-) 22:28:57
分段與全程有優(yōu)先級(jí)的區(qū)別了
北京-喜<-> 22:29:13
座位在每種站點(diǎn)組合里,都有1個(gè)庫(kù)存, 站點(diǎn)組合 取決于線路, 比如北京到上海 是線路, 北京到上海的 D41 拐迁,這個(gè)是車(chē)次, 站點(diǎn)有等級(jí)蹭劈,基本就是行政等級(jí), 這個(gè)會(huì)影響庫(kù)存數(shù)量(其實(shí)就是站點(diǎn)組合問(wèn)題,座位數(shù)量/座位類型) ,座位x站點(diǎn)組合 = 所有庫(kù)存, 這里可以給座位加限制條件线召,可以給站點(diǎn)組合加限制條件
杭州-Freedom(-) 22:32:47
每一個(gè)車(chē)次的每一個(gè)座位铺韧,是一個(gè)單獨(dú)的有向圖;一列車(chē)如果有200個(gè)座位缓淹,就是200個(gè)有向圖哈打;一個(gè)有向圖上塔逃,任何一段被占了,就只能售賣(mài)段前料仗、段后的線段
北京-哇咔咔(-) 22:32:51
現(xiàn)在我覺(jué)的@Freedom 的做法更簡(jiǎn)單了
北京-喜<-> 22:32:58
影響 最后的那個(gè) 所有庫(kù)存的集合大小而已
北京-哇咔咔(-) 22:33:17
不用有向圖湾盗,一個(gè)無(wú)向圖就行, 確切的說(shuō)是一個(gè)N叉樹(shù)
杭州-Freedom(-) 22:33:47
站點(diǎn)有順序,所以要用有向圖
北京-喜<-> 22:36:34
后續(xù)用 from to就搞定了, 有序, 你的圖就是庫(kù)存發(fā)放的事情, 到時(shí)候一起說(shuō)了立轧,你是把2個(gè)問(wèn)題放在一起說(shuō)了, 座位x站點(diǎn)組合的時(shí)候, 可以決定一些站點(diǎn)不參與進(jìn)來(lái), 也可以指定哪些座位類型和車(chē)廂 進(jìn)來(lái)
珠海-吳彥祖居士(-) 22:42:00
我回家的春運(yùn)票格粪,一開(kāi)始只會(huì)始發(fā)到終點(diǎn)有票,中間全部沒(méi)票的
北京-喜<-> 22:42:03
業(yè)務(wù)和模型之間的關(guān)系啊, 模型是可以支撐各種業(yè)務(wù)的 ,但是業(yè)務(wù)不是模型的數(shù)據(jù)結(jié)構(gòu), 應(yīng)該是全段票優(yōu)先賣(mài), 上次講A+B 商品=C商品的氛改,可以使用積分, 已經(jīng)說(shuō)了背后的思考邏輯
北京-五道杠(-) 22:44:16
如果-很“蠢“ 車(chē)次+站間+座位是唯一的 提前動(dòng)態(tài)規(guī)劃+預(yù)留
北京-喜<-> 22:45:14
沒(méi)有做過(guò)商品上架邏輯的同學(xué)么帐萎? 把一間房分小時(shí)座位小時(shí)房售賣(mài)的邏輯, 庫(kù)存和時(shí)間的關(guān)系, 什么時(shí)間可買(mǎi),庫(kù)存的級(jí)聯(lián)關(guān)系, 哪些房間可以賣(mài)小時(shí)房, 不同房間胜卤,比如有的17點(diǎn)就不賣(mài)了疆导。有的可以賣(mài)到20點(diǎn), 和鐵路售票是一個(gè)問(wèn)題啊
成都-孤狼(-) 22:49:28
這種是怎么玩兒的呢?
北京-喜<-> 22:50:09
窮舉庫(kù)存組合和庫(kù)存關(guān)系, 至于上架的時(shí)候是不是上架, 是可以按房型分類葛躏、時(shí)間等約束的, 產(chǎn)出的可用庫(kù)存結(jié)構(gòu) 范圍不同, 這個(gè)時(shí)候用戶還沒(méi)進(jìn)來(lái)買(mǎi)呢, 所以這個(gè)和用戶沒(méi)關(guān)系澈段,別把用戶帶進(jìn)來(lái), 用戶實(shí)際購(gòu)買(mǎi)后,找到那個(gè)庫(kù)存紫新,鎖定
成都-孤狼(-) 22:53:21
簡(jiǎn)化成商品類型——>業(yè)務(wù)規(guī)則均蜜?
北京-喜<-> 22:53:23
并把跟它有交集關(guān)系的庫(kù)存,都鎖定支付了芒率,直接庫(kù)存是售賣(mài), 交集關(guān)系的庫(kù)存是無(wú)效,關(guān)聯(lián)庫(kù)存是怎么生成的, 以時(shí)間為例:售賣(mài)時(shí)間是12-20點(diǎn)囤耳,小時(shí)房3小時(shí), 所以庫(kù)存時(shí)間是12-17點(diǎn), 12點(diǎn)+3=15,所以和13和14庫(kù)存有級(jí)聯(lián)關(guān)系, 每個(gè)小時(shí)都有1個(gè)庫(kù)存, 12點(diǎn)買(mǎi)的時(shí)候偶芍,把13 14的一起鎖定了, 買(mǎi)13的時(shí)候充择,也影響這個(gè)房間的12點(diǎn)和14點(diǎn) 15點(diǎn)的庫(kù)存,房間=座位,時(shí)間=站點(diǎn), 某個(gè)站點(diǎn)的某個(gè)座位不賣(mài)匪蟀,或者數(shù)量限制椎麦。是在上架的時(shí)候就決定的.
成都-奮斗(-) 23:11:55
窮舉庫(kù)存組合,然后沒(méi)有最優(yōu)解所以才會(huì)有上車(chē)補(bǔ)票的存在
北京-喜<-> 23:13:35
車(chē)上售票機(jī) 查的庫(kù)存狀態(tài)系統(tǒng), 跟-在線和車(chē)站柜臺(tái)查的是一套
杭州-受氣包(-) 23:13:58
上車(chē)補(bǔ)票都是沒(méi)坐的啊
北京-喜<-> 23:14:07
所以為啥我一直說(shuō)這個(gè)不是-設(shè)計(jì)的
杭州-cc愛(ài)冒險(xiǎn)(-) 23:14:09
@北京-一粒沙 莎莎材彪,下個(gè)“智行火車(chē)票”APP观挎,他有預(yù)約和搶票功能,其實(shí)都是搶票段化。
北京-喜<-> 23:14:17
他只是互聯(lián)網(wǎng)售票通道
杭州-受氣包(-) 23:14:28
這個(gè)需要查系統(tǒng)么嘁捷?不是只要人站得下就能補(bǔ)么
北京-喜<-> 23:14:41
不是, 有的座位 乘客沒(méi)來(lái), 可以賣(mài)這個(gè)座位號(hào)
杭州-受氣包(-) 23:15:03
那票面也是無(wú)座的
北京-喜<-> 23:15:07
或者庫(kù)存在上架的時(shí)候沒(méi)分
杭州-受氣包(-) 23:15:23
只是人們自己看到空座就坐了而已啊
北京-喜<-> 23:15:42
這個(gè)也是業(yè)務(wù) 其實(shí)結(jié)構(gòu)是能支持的
杭州-受氣包(-) 23:16:07
所以我覺(jué)得補(bǔ)票不用查系統(tǒng)
深圳阿程<-> 23:17:20
補(bǔ)臥鋪的時(shí)候 ?显熏?
北京-喜<-> 23:17:22
都可以, 看業(yè)務(wù)
杭州-受氣包(-) 23:17:54
嗯雄嚣,請(qǐng)繼續(xù)
北京-喜<-> 23:18:01
站票換個(gè)角度是無(wú)庫(kù)存上限的
深圳阿程<-> 23:18:02
特別長(zhǎng)途車(chē) 經(jīng)常有列車(chē)員喊 有臥鋪 咋打出來(lái)的票
北京-喜<-> 23:18:20
也沒(méi)有物理座位信息 只有車(chē)廂, 座位x站點(diǎn)組合, 站票嚴(yán)格不等于座位, 可以虛擬化個(gè)座位 也可以不, @深圳阿程 這個(gè)肯定走, 所以講的話 一般是鐵路售票系統(tǒng), 根本不提-, 講-就講流量和體量問(wèn)題,這個(gè)沒(méi)啥好講的
深圳阿程<-> 23:21:52
他們得票肯定是分車(chē) 車(chē)廂 然后分段的 一般一個(gè)長(zhǎng)途車(chē) 不會(huì)每個(gè)車(chē)型都搞短途
北京-喜<-> 23:21:58
在吹牛逼的話,這也是前臺(tái)和中臺(tái)架構(gòu)
杭州-受氣包(-) 23:23:22
就是直覺(jué)上不習(xí)慣枚舉
成都-奮斗(-) 23:23:45
喜神如果窮舉座位與站的組合缓升,那么一輛車(chē)就會(huì)有n個(gè)組合了鼓鲁,賣(mài)出一個(gè)座位就少幾種組合,還有就是最優(yōu)解這個(gè)他咋確定的?
北京-喜<-> 23:24:30
沒(méi)有最優(yōu)解啊, 完全看乘客分布, 大家都買(mǎi)1站才好呢, 也得看計(jì)費(fèi)規(guī)則啊,不一定是整體收入最大
成都-奮斗(-) 23:25:28
估計(jì)也有優(yōu)先級(jí)考慮
北京-喜<-> 23:25:51
每個(gè)站都是5塊, 加一站加5塊, 你可以算算怎么玩最大利益
成都-奮斗(-) 23:26:16
隨開(kāi)車(chē)時(shí)間越近港谊,估計(jì)某個(gè)時(shí)刻就全部放出票
北京-天空<-> 23:26:18
現(xiàn)在-的規(guī)則之一就是先放出來(lái)的始點(diǎn)到終點(diǎn)的票
北京-喜<-> 23:26:25
再比如里程計(jì)費(fèi)的
成都-奮斗(-) 23:26:35
先把價(jià)錢(qián)最高的賣(mài)了
北京-天空<-> 23:26:40
不是
成都-奮斗(-) 23:26:43
外賣(mài)短程
北京-喜<-> 23:26:43
@北京-天空 上架加個(gè)時(shí)間就可以了啊, c端可見(jiàn)性, 不等于后臺(tái)數(shù)據(jù)集
北京-天空<-> 23:27:06
還有分時(shí)間段放票
成都-奮斗(-) 23:27:27
他是不是提前生成好了數(shù)據(jù)放庫(kù)
北京-喜<-> 23:27:28
所有庫(kù)存都初始化好了, 只是你看不到而已, 秒殺不都這樣么
成都-奮斗(-) 23:27:56
然后根據(jù)規(guī)則的可見(jiàn)性
北京-喜<-> 23:28:01
對(duì)啊
杭州-Freedom(-) 23:29:58
每一個(gè)有向圖的線段組合骇吭,都是生成好的,每賣(mài)出一張票封锉,去匹配符合條件的組合就行了
成都-奮斗(-) 23:30:33
為啥是有向圖绵跷,不能是無(wú)向圖么
杭州-Freedom(-) 23:30:33
賣(mài)出的票越多,剩余的組合數(shù)越少
北京-天空<-> 23:31:07
@杭州-Freedom 問(wèn)題的根源在并發(fā)上成福,因?yàn)榇汗?jié)全國(guó)人群大遷徙
杭州-Freedom(-) 23:31:25
@成都-奮斗 站點(diǎn)有順序
北京-天空<-> 23:32:19
業(yè)務(wù)上優(yōu)化比技術(shù)上的優(yōu)化要來(lái)的顯著
上海-剎那芳華(-) 23:32:23
用圖的話碾局,肯定是有向的啊
成都-奮斗(-) 23:32:28
難點(diǎn)在于車(chē)位和站點(diǎn)組合
北京-喜<-> 23:32:36
@杭州-東子 中臺(tái)的解釋還可以,過(guò)得去奴艾。前臺(tái)解釋錯(cuò)了
杭州-東子(-) 23:33:52
我理解的前臺(tái)就是各個(gè)渠道净当,比如說(shuō)咸魚(yú),天貓蕴潦,淘寶像啼,這些入口, 看完這個(gè)文章之后[是的]
成都-奮斗(-) 23:35:07
中臺(tái)我有點(diǎn)沒(méi)有懂的是。n個(gè)業(yè)務(wù)潭苞,每個(gè)業(yè)務(wù)執(zhí)行的流程節(jié)點(diǎn)不一致忽冻,是怎么執(zhí)行的,根配置的每個(gè)業(yè)務(wù)執(zhí)行節(jié)點(diǎn)么
北京-喜<-> 23:44:36
@成都-奮斗 節(jié)點(diǎn)基本是一致的此疹, node的最大集是一樣的僧诚,業(yè)務(wù)決定哪些node參加,可以使用配置蝗碎,也可以硬編碼
北京-哇咔咔(-) 2018/02/24更新
經(jīng)停站湖笨,包括上車(chē)站和途經(jīng)站,不包括下車(chē)站蹦骑,因?yàn)槌丝筒粫?huì)占用下車(chē)站的座位
假設(shè)有N個(gè)車(chē)站慈省,經(jīng)停站是始發(fā)站的一共N-1種站點(diǎn)組合,終點(diǎn)站的組合數(shù)是0眠菇,經(jīng)停站是第i站的組合數(shù)是i*(N-i)边败,0<i<=N
給一個(gè)車(chē)次的所有站從始發(fā)站編號(hào),作為X軸捎废,組合數(shù)是Y軸放闺,繪制曲線,會(huì)形成一個(gè)等腰三角形(如果站數(shù)是偶數(shù)缕坎,就是等腰梯形,終點(diǎn)站不算在站數(shù)內(nèi))
每一個(gè)組合就是一個(gè)站段篡悟,就是一種售票的可能谜叹,可以把這一個(gè)站段想象成一個(gè)始發(fā)站是站段開(kāi)頭匾寝,終點(diǎn)站是站段結(jié)尾的虛擬列車(chē)
以始發(fā)站為例,一共N-1種組合荷腊,就要構(gòu)造N-1個(gè)虛擬的列車(chē)
但是這些虛擬列車(chē)是可以重用的艳悔,這些虛擬列車(chē)覆蓋的所有經(jīng)停站都可以重用它們
票池維度包含車(chē)次和等級(jí)(軟臥 硬臥 商務(wù)座 一等座 二等座 無(wú)座),無(wú)座可以認(rèn)為是虛擬的座位
臥鋪和座位編號(hào)可以是車(chē)廂編號(hào)+鋪號(hào)/座號(hào)
要買(mǎi)某個(gè)站段的票女仰,就是買(mǎi)這個(gè)站段對(duì)應(yīng)的虛擬列車(chē)的庫(kù)存
為每個(gè)站定義一個(gè)版本號(hào)猜年,一個(gè)站作為經(jīng)停站的所有站段庫(kù)存數(shù)發(fā)生變化這個(gè)版本號(hào)就+1
這樣就把一個(gè)需要頻繁刷新庫(kù)存數(shù)的操作減少到需要對(duì)經(jīng)停站相關(guān)的庫(kù)存數(shù)的操作
要買(mǎi)一張票,首先把相應(yīng)站段的每一站作為經(jīng)停站的所有虛擬列車(chē)指定等級(jí)的未售出票和未鎖定票求交集疾忍,記為G
同時(shí)購(gòu)買(mǎi)同一個(gè)站段乔外、車(chē)次、等級(jí)的票的推入同一個(gè)隊(duì)列一罩,隊(duì)列數(shù)是這些維度的組合數(shù)杨幼,隊(duì)列內(nèi)串行操作
從G中選擇第一個(gè)位置,鎖定聂渊,進(jìn)入支付流程差购,處理隊(duì)列中的下一個(gè)請(qǐng)求
支付失敗或超時(shí),解鎖
支付成功座位被售出
假定有key是stations:上車(chē)站:下車(chē)站:車(chē)次:等級(jí)汉嗽,可以從這個(gè)key查到指定站段欲逃、車(chē)次、等級(jí)的每一個(gè)經(jīng)停站
假定有key是trains:經(jīng)停站:車(chē)次:等級(jí)饼暑,可以從這個(gè)key指定經(jīng)停站稳析、車(chē)次、等級(jí)的每一個(gè)虛擬列車(chē)撵孤,用“上車(chē)站:下車(chē)站:車(chē)次:等級(jí)”表示
假定有key是seats:上車(chē)站:下車(chē)站:車(chē)次:等級(jí)迈着,可以從這個(gè)key查到指定站段、車(chē)次邪码、等級(jí)的每一個(gè)座位裕菠,座位中記錄是否售出或鎖定