※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言:
: > 對於空位管理服務器而言,沒有所謂的暫時鎖定這回事
: > 註冊了就是註冊了這樣,由於是單執行緒,沒有重複註冊問題
: > 至於有效的連續空位檢索,是Client端的工作,與Server端無關
: > 也因此,不管今天找空位要花多少時間,都跟伺服器延遲無關
: 假設全路段有 n 個站, 共 c 台 clients , client 要讀空位得有
: read 執行緒到這個 3-dim array table [座位數* (n-1)個路段]
: 讀出所有座位路段的記號, 要確保正確最快就是 Multiple Read
: Single Wright , 而且一旦寫入成功就得通知所有讀走空位的
^^^^^^ 應該是 Write, 後面都寫錯了
: clint 立即更新.
剩餘空位的資料可以用MultiCast執行,由控制端主動發送
: 假設所有的 c client 在高需求最壞情況下就會發生同時搶同一個空
: 位(可能不同路段或路段重疊)的情形, 這 c 個請求就在單一 Wright
: 執行緒下變成需全部排隊等候搶空位(企圖第一個寫入成功), 由於是
: 對空位改成已售出, 這排隊如果還不是按座位分對應 queue (這就是
: 顆粒度大小之不同), 就必須先對空位路段記號再做檢查, 以確保是未
: 售出才能企圖寫入記號, 也就是說必須對所需空位路段(1..n-1)記號
: 做 read-check-wright. 只是全在 server 端的 wright 執行緒做.
: 假設規格要求在 T 時間內就完成成功或不成的寫入交易, 假設單筆請
: 求是 S 送達時間與 R 回覆時間, 每筆請求就是 P 處理時間, 排隊下
: 最壞就是排到尾巴, 所以要 c * P 處理時間, 故同時請求時每個請求
: 與回覆各有專線與收送器負擔, 所以收送是重疊平行, 最後最壞的一個
: 所需的時間就是 (S + c*P + R) , 照日本的範例就是 T <= 6 秒, 再
: 假設最後一個也是搶不到者, 搶不到者的判讀只要有一線段記號 read-
: check 不成立就是得放棄, 以最短的一個 read-check 為估算, T =
: (S + c *(read-check) + R) <= 6 秒.
你認為這樣會超過6秒嗎....
我認為你可以把文章寫的更清楚
為什麼看你的文章看老半天還是不知道你想講什麼
: 以往, 這個 read-check-wright 必須是寫入 perment storage 以應付
: 臨時斷電 crash , 如果使用快速 DRAM 就要不停電備援.
: Clint 端發現座位已售出的情況是
如果機房沒有不斷電備援那還真是糟糕
更何況另外還有一個訂位系統紀錄完整的訂位資料
只是從訂位資料重新建構空位資料需要一點時間
但是既然機房都重啟了,這點就無須在意
: 1.自己企圖賣出
: 2.已無法賣出
: 3.被通知已被他站賣出或自行向 server 端 array table 讀取空位路段
: 記號.
: 上面就是 Single Supervisor/Monitor 的解法, Read 與 Wright 併行
: 緒還是必須對 Single shared memory (空位路段記號的 array table)
: 做 Mutual Exclusive Lock 的鎖定與判讀動作 (通稱 semaphore).
: 這種做法, client 數量 c 那天變大或變小就受影響, 不是伸縮衣無法適
: 應體型成長(Scalability).
商業與研究是不同的思考方向
商業領域要考慮的實際上可能的最大運量
目前高鐵共八站150台, 未來我估計12站220台
以每台機器8秒完成一次訂單設定, 空位的管理能力要求每36ms確認一個空位
以現有的CPU處理能力,一台電腦綽綽有餘
--
〒作者:SmallBee 來自:46-204.dorm.ncu.edu.tw
◎二進位的世界【140.115.50.50‧binary.csie.ncu.edu.tw】