我們在開發WEB的時候,常常會遇到平衡負載的問題!透過多台WEB來跑平衡負載是我們常見的方式,但是最後真正的瓶頸還是會卡在資料庫端!
也就是雖然你前面放了100台WEB去平衡負載,但是你可能只有幾台資料庫負責資料運算,也就是大量的Loading仍然會卡在這個關鍵環節。資料庫的反應速度決定了整套系統的反應速度。資料庫快、系統就快;資料庫慢、系統就慢。
迫使我開始去思考有沒有可能讓資料庫也能跑平衡負載的架構,例如可以輕易地將資料庫分散在100台伺服器上面跑,Insert 的時候自動 Insert 到資料最少的那一台,Update 的時候自動 Update 100台資料庫中的資料,Delete的時候自動刪除100台資料庫中相關的資料,Select 的時候自動彙整100台資料庫查詢的結果!
這樣的設計,當瞬間100萬筆資料要Insert進去的時候,會自動分散在100台資料庫,每台資料庫Insert 一萬筆。因為有100台伺服器的CPU、記憶體以及硬碟IO在協助分散負載,所以新增的速度會非常快,每台資料庫所承受的壓力是非常小的!
這樣設計的效益是很高的,假設每一台伺服器都是四核心雙CPU,那麼這一百台的資料庫系統就具備了800個核心的運算能力。如果是採用八核心雙CPU,那就具備了1600個核心的運算能力,這是非常驚人的!而且擴充的彈性很高,可以隨時加新的機器進去,或是把某一台機器撤出來,都不會影響整體的資料運算!
待續...!!
全站熱搜
留言列表