毫無疑問,許多電子商務網站都經歷過假期的高訪問量。例如,1-800-Flowers.com公司(1-800-Flowers.com網站)就在情人節、母親節、聖誕節、復活節、感恩節、秘書節,以及團隊感謝周那一天遇到了劇增的訂單。還有其他大多數的在線零售商也都經歷過從感恩節一直持續到12月26日的訂貨高峰期。
那麼你從這些公司身上可以了解到,他們需要保持高可用性,快速運行的數據庫。下面我將按照以下的總體概念和清單,討論幾種你可以應對高峰來臨的方式。
可用性方法
集群
高可用性通常包含了集群。當你需要較高級別的正常運轉時間的時候,你需要對SQL Server進行集群,由以下幾部分組成,有幾個節點集合在一起形成的一個單個實例的集群,他們在面對客戶的時候表現為一個單個的節點。如果集群中的一個節點掉線了(由於SQL Server錯誤,硬件錯誤或者維護),其他的節點將會自動接過它的工作負載。客戶根本不需要重新連接到其他的節點上,因為這些節點都連接到一個虛擬的服務器上,它漂浮在所有活動節點之上。
集權提供了對硬件和軟件錯誤的自動錯誤容忍,但是它通常不會提供對本地錯誤的容忍(例如,放置集群的大廈或者房間內的電源壞了)。注意力應該放在消除單個點的失敗,例如冗余電源供應或者備用的發電機能源。
地理集群和負載均衡
其他的高可用性方法包括地理集群,集群節點分布在不同的位置上;或者地理負載均衡,IP地址客戶可以在主要的數據中心和災難恢復網站之間交換。
EMC公司,日立數據系統公司,還有現在的收購了賽門鐵克的Veritas軟件公司都提供了硬件的數據鏡像,它可以提供持續的復制,這樣災難恢復網站就可以保證擁有你的數據的實時拷貝。硬件數據鏡像工具可以用於連接地理IP解決方案,為災難恢復網站提供自動化的錯誤恢復。
縮小規模
你還可以利用縮小規模的方法來將你的數據分散到多個工作機器上。不再讓1000個用戶都連接到一個SQL Server上,而是讓10個SQL Server上分別連接100個用戶。你的數據訪問模式必須要與此相匹配,客戶連接到哪個SQL Server都沒關系,或者你必須要激活粘性會話。通過這種方式,每個客戶在其會話長度內都連接到一個單個的SQL Server上。
例如,如果你的聯盟中有10個SQL Server提供分類信息,並且在這10個SQL Server之間的數據也是相同的,那麼客戶連接到哪個SQL Server上,然後又重新連接到哪個SQL Server上,這都沒有關系。SQL Server 2005中的點對點應用程序就被恰好是為這種類型的縮小規模設計的。
注意,SQL Server不能自動將負載分散給其他的SQL Server。你需要均衡網絡負載,一邊將負載分布到多個網絡服務器上,並且聯盟中的每個網絡服務器上都安裝一個或者多個SQL Server。
理解工作流
電子商務公司整年都在准備他們的旺季銷售高峰。系統架構師研究工作流,以便於理解事務中的哪一個處理是必需的,哪一個可以是批量處理的,哪一個是可以從其他機器的並行處理中受益的。
考慮一下一般的下訂單的操作。輸入信用卡並且在網頁上經過驗證,確保數字以某個序列開始,並且滿足一定的長度。這個步驟可以在浏覽器上進行,這樣就可以不用占用網絡服務器的處理器周期。信用卡交費通常是沒有經過授權的,因為網絡服務呼叫會在這一點上慢下來,導致整體的可測量性解決方案等級下降。如果不需要網絡服務呼叫認證每一個信用卡事務,那麼電子商務網站就可以支持好幾千個,甚至更多的頁面。信用卡將會在稍後大批處理過程中進行處理。
正如上面的例子所演示等,通過仔細查看工作流,系統架構師辨認出可以異步執行的處理,那麼整體的可測量性方案等級將會上升。