精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: SmallBee.bbs@binary.csie.ncu.edu.tw (喵~~~), 信區: programming > 其實這種東西一定早就有寫好的了 > 訂票系統又不是第一次出現... > 在我的想法裡, 我認定所有訂票機器都是固定的 > 也因此,每一台訂票機都擁有一個唯一識別碼 > 流程1 > 讀取空位, 這個動作由訂票機直接向資料庫請求完整的空位資料 > 在使用者確認的過程中, 訂票機以一定不影響系統效能的頻率確認空位還空著 > 流程2 > 使用者下訂單, 此時不是直接寫入資料庫, 而是向一個唯一服務程式送出空位註冊 > 該服務程式使用UDP+CRC Check+單執行緒確保不會有兩個請求同時到達 > 資料內容包含訂票機識別號碼 > 由於只有唯一的程式負責寫入訂位, 自然沒有重複畫位問題 ====== 這是將所有請求用排隊來確保單進單出, 這只有解決互斥, 但需化併行為串行, 所以整個反應變慢. 如果是同時想定同一車廂的多個空位, 也是排隊一個訂好, 再排隊訂另一個嗎 ? 何時可以 "快速" 確定滿額 ? 還是每次都得去 try ? 此題不難, 但成敗論英雄. 這是一個 "物美" (在各種狀況下都有一定品質) 與 "價廉" (效能/成本, 時間反應) 必需兼得的項目. > 流程3 > 訂票機自行向資料庫確認定位是否成功, 藉由確認該空位的註冊者是不是自己 > 流程4 > 若失敗, 回到流程1 > 若成功, 但使用者放棄付款, 則刪除空位註冊資料 > 若成功, 且付款成功, 則向資料庫寫入完整定位資訊 > ======================= > 其實高鐵總共也才(19(北上)+19(南下))*6(站間)*(923(標準)+66(商務))=225492 > 要紀錄所有空位資料才880KB(我相信訂票機不會超過1023台...) > 這種大小連資料庫都不需要動用, 直接作成矩陣就好... -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234