久久无码高潮喷水抽搐,极品馒头泬19p,久久人人爽精品玩人妻av,精品国产成人国产在线视,精品视频一区二区三区在线观看

如何建設(shè)一個靠譜的火車票網(wǎng)上訂購系統(tǒng)(圖文)

您當前位置:首頁 > 紅訊頻道 > 站長經(jīng)驗

  • 紅軟基地 推薦
  • 2012-01-18
UVt紅軟基地

  三類請求的業(yè)務(wù)處理過程,被分為兩個階段,UVt紅軟基地

  1. 運行于緩存中的任務(wù)隊列。設(shè)置隊列的目的,是防止處理過程耗時太長,導致大量用戶請求擁塞于門戶服務(wù)器,導致系統(tǒng)癱瘓。UVt紅軟基地

  2. 業(yè)務(wù)處理處理器,對于每一類業(yè)務(wù),分別有一群業(yè)務(wù)服務(wù)器。不同業(yè)務(wù)的處理流程,各不相同。UVt紅軟基地

 UVt紅軟基地

  UVt紅軟基地

UVt紅軟基地

 UVt紅軟基地

  圖二。12306.cn 網(wǎng)站查詢和訂票業(yè)務(wù)流程設(shè)想圖。UVt紅軟基地

  Courtesy http://i879.photobucket.com/albums/ab351/kan_deng/12306-1.pngUVt紅軟基地

  圖二描述了查詢和訂票,兩個業(yè)務(wù)的處理流程。登記業(yè)務(wù)流程從略。UVt紅軟基地

  查詢的業(yè)務(wù)流程,參見圖二上半部,分五步。這里有兩個問題需要注意,UVt紅軟基地

  1. 用戶發(fā)出請求后,經(jīng)過短暫的等待時間,能夠迅速看到結(jié)果。平均等待時間不能超過 1 秒。UVt紅軟基地

  2. 影響整個查詢速度的關(guān)鍵,是“查詢服務(wù)器”的設(shè)計。UVt紅軟基地

  查詢?nèi)蝿?wù)可以進一步細化,大致分成三種。UVt紅軟基地

  1. 查詢車次和時間表,這是靜態(tài)內(nèi)容,很少與數(shù)據(jù)庫交互,數(shù)據(jù)量也不大,可以緩存在內(nèi)存中。UVt紅軟基地

  車次和時間表的數(shù)據(jù)結(jié)構(gòu),不妨采用 Key-Value 的方式,開發(fā)簡單,使用效率高。Key-Value 的具體實現(xiàn)有很多產(chǎn)品,[5] 建議使用 Redis。UVt紅軟基地

  這些是技術(shù)細節(jié),不妨通過對比實驗,針對火車票訂票系統(tǒng)的實際流量,以及峰值波動,確定哪一個產(chǎn)品最合適。UVt紅軟基地

  2. 查詢某一班次的剩余車票,這需要調(diào)用數(shù)據(jù)庫中不斷更新的數(shù)據(jù)。UVt紅軟基地

  [5] 建議把剩余車票只分為兩種,“有”或“無”,這樣減少調(diào)用訪問數(shù)據(jù)庫的次數(shù),降低數(shù)據(jù)庫的壓力。但是這樣做,不一定能夠滿足用戶的需求,說不定會招致網(wǎng)友的批評譏諷。UVt紅軟基地

  [4] 建議在訂票隊列中,增加測算訂票隊列長度的功能,根據(jù)訂票隊列長度以及隊列中每個請求的購票數(shù)量,可以計算出每個車次的剩余座位。如果 12306.cn 網(wǎng)站只有一個后臺系統(tǒng),這個辦法行之有效。UVt紅軟基地

  但是假如 12306.cn 網(wǎng)站采用分布式結(jié)構(gòu),每個鐵路分局設(shè)有子系統(tǒng),分別管理各個鐵路分局轄區(qū)內(nèi)的各個車次。在分布式系統(tǒng)下,這個辦法面臨任務(wù)轉(zhuǎn)發(fā)的麻煩。不僅開發(fā)工作量大,而且會延長查詢流程處理時間,導致用戶長久等待。UVt紅軟基地

  3. 已經(jīng)下單的用戶,查詢是否已經(jīng)成功地訂上票。UVt紅軟基地

  每個用戶通常只關(guān)心自己訂的票。如果把每個用戶訂購的車票的所有內(nèi)容,都緩存在內(nèi)存里,不僅非常耗用內(nèi)存空間,內(nèi)存空間使用效率低下,更嚴重的問題是,訪問數(shù)據(jù)庫過于頻繁,數(shù)據(jù)量大,增大數(shù)據(jù)庫的壓力。UVt紅軟基地

  解決上述分布式同步,以及數(shù)據(jù)庫壓力的兩個問題,不妨從訂票的流程設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計入手。UVt紅軟基地

  假如有個北京用戶在網(wǎng)上訂購了一套聯(lián)票,途經(jīng)北京鐵路局和鄭州鐵路局轄區(qū)的兩個車次。用戶從北京上網(wǎng),由北京鐵路局的子系統(tǒng),處理他的請求。北京鐵路局的訂票服務(wù)器把他的請求一分為二,北京鐵路局的車次的訂票,在北京子系統(tǒng)完成,鄭州鐵路局的車次在鄭州子系統(tǒng)完成。UVt紅軟基地

  每個子系統(tǒng)處理四種 Key-Value 數(shù)據(jù)組。UVt紅軟基地

  1. 用戶ID:多個 (訂單ID)s。UVt紅軟基地

  2. 訂單ID:多個 (訂票結(jié)果ID)s。UVt紅軟基地

  3. 訂票結(jié)果ID: 一個 (用戶ID,車次ID)。UVt紅軟基地

  4. 車次ID:一個(日期),多個 (座位,用戶ID)。UVt紅軟基地

  北京訂票服務(wù)器完成訂票后,把上述四個數(shù)據(jù)組,寫入北京子系統(tǒng)的數(shù)據(jù)庫,同時緩存進北京的查詢服務(wù)器,參見圖二下半部第6步和第7步。UVt紅軟基地

  鄭州訂票服務(wù)器完成訂票后,把上述四個數(shù)據(jù)組,寫入鄭州子系統(tǒng)的數(shù)據(jù)庫,同時緩存進北京的查詢服務(wù)器,而不是鄭州的服務(wù)器。UVt紅軟基地

  讓訂票服務(wù)器把訂票數(shù)據(jù),同時寫入數(shù)據(jù)庫和查詢服務(wù)器的緩存,目的是讓數(shù)據(jù)庫永久保留訂票記錄,而讓大多數(shù)查詢,只訪問緩存,降低數(shù)據(jù)庫的壓力。UVt紅軟基地

  北京用戶的訂票數(shù)據(jù),只緩存在北京的查詢服務(wù)器,不跨域緩存,從而降低緩存空間的占用,和同步的麻煩。這樣做,有個前提假設(shè),查詢用戶與訂票用戶,基本上是同一個人,而且從同一個城市上網(wǎng)。UVt紅軟基地

  但是這里有個缺陷,某用戶在北京上網(wǎng)訂了票。過了幾天,他在北京上網(wǎng),輸入用戶ID和密碼后,就會看到他訂購的所有車票?墒怯诌^了幾天,他去了鄭州,從鄭州上網(wǎng),同樣輸入用戶ID和密碼,卻看不到他訂購的所有車票。UVt紅軟基地

  解決這個缺陷的辦法并不麻煩,在用戶查詢訂票信息時,需要注明訂票地點,系統(tǒng)根據(jù)訂票地點,把查詢請求轉(zhuǎn)發(fā)到相應(yīng)區(qū)域的子系統(tǒng)。UVt紅軟基地

  另外,每次訂票的時候,網(wǎng)站會給他的手機發(fā)送短信,提供訂票信息,參見圖二下半部第8步和第9步。

來源:admin5

專題合集 | 手機游戲 | 最近更新 | 下載排行 | 提交軟件 | 在線病毒掃描 | 聯(lián)系我們 | 版權(quán)聲明 | 網(wǎng)站地圖
Copyright ©2006-2013 紅軟基地(piola.cn). 湘ICP備2024053236號-1