超市使用值分咭,不能死機,資料不能有任何損失和錯誤.當Active Server無法處理Transaction時,Standby Server要自動去處理,如下圖:
MemDB的網絡系統是用Client-Server,應用程式是Client,直接Send Reqeust到Server,而我設計Request只有SELECT,LIST ,REPORT, INSERT, UPDATE和DELETE,前三個不會有任何update,也不會有任何disk access,可以分別在Active或Standby處理.
後三個Request需要同時update Ative和Standby,當Active Server接到這些Request,首先pass這request到Standby執行,然後由Active執行,在正常執行之下,兩個db是consistent,否則要處理error handlling.
要做以上error handling,一個方法是Active和Standby都儲存一個version number,每個update request,它們的version number是一致.有以下error case要處理.
1) Standby無法回應,這個case比較簡單,Active可繼續正常連作,並回報給技術人員.
2) Active無法回應,Standby會嘗試連接Active,如果失敗,Standby轉為Active,並回報給技術人員.Client無法連接到Active,會自動連到Standby.
當技術人員接到報告,可於非使用時間檢查和修正,因為還有一部Server可以運作,所以有更多時間讓技術人員去解決問題.
現時MemDB有很多客戶都是使用一個Server,多年出問題的機會很微,但對大公司,以上的解決方案是不可少,當然以上系統會複雜了很多,增加了開發和維護難度.
如果Active因某些原因暫時無法回應, 但Standby轉為Active後,Active卻突然回復正常...
回覆刪除會不會變成Active-Active ?
飛飛 :
回覆刪除如果Active因某些原因暫時無法回應, 但Standby轉為Active後,Active卻突然回復正常...
會不會變成Active-Active ?
所以有version control, active會問standby取version, 如果不consistent, 就不能使用了.
alex :
回覆刪除其實使用smartcard,就可以offline處理,成本也不貴。個人經驗話我知,呢d同步處理,好容易玩死自己。
除了因要儲值功能, stand-by都有其value, 不過同意你的說法, 好容易玩死自己, 所以要客戶投資才會開發.