對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大(而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的**就知道了),並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的中斷。
而對於資料庫伺服器,集群就比較少見了,以往只用於高階系統,比如象oracle就提供了並行模組。
而icx的出現,則為sql server資料庫的集群提供了良好的解決方案。(參見:icx-實現sql server資料庫集群)。
我們先看一下這種產品的原理:
資料庫伺服器的集群,之所以比應用伺服器複雜,是因為資料庫要有乙個同步的問題,在兩邊不僅要讀,更有乙個寫的資料如何一致的問題。如果依靠資料庫本身的同步,則效率很低,很難以事務級的方式進行(即同步成功才向前端報告事務完成)。
而icx的原理,則是象乙個路由器一樣(所以稱為資料庫路由器),對服務請求進行分發,如果是查詢,則象應用伺服器那樣,分發到某一台資料庫伺服器,而如果是更新的請求(包括新增、修改、刪除等各類),則同時傳送到兩邊的伺服器,並且在兩邊的更新均完成後才報告事務完成。
下面分析一下icx的效能問題:
首先是提交時的效能,查詢是沒關係了,因為路由器式的分發相對於查詢操作本身時間是很短的,主要要關注的是更新操作。但相對於依靠資料庫或檔案系統的同步方式而言,icx的更新是在兩邊同時進行的,而其他方式是採用a更新-同步-b更新的方式,要做三步工作,所以icx的效率遠高於其他同步方式,可以說其時間基本上就是兩台伺服器中較慢的一台的時間。(而且注意由於做了負載均衡,這台的速度要比只有一台伺服器時還要快)
其次是整體的併發處理能力,我們以兩台伺服器為例。如果只有查詢,應該基本上可以處理2倍的併發量。但與應用伺服器不同的是,更新的操作是在兩邊同步進行的。因此,併發能力的提公升,實際與更新/查詢的比例、複雜程度是相關的,如果更新多、查詢少,處理能力的提公升相對就小一些。但是,常識上資料庫應用查詢的比例遠大於更新,而且查詢的複雜度、占用伺服器資源也遠大於更新(比如更新經常是單錶的,基於索引的,而查詢中多表聯接、多個條件之類的非常常見),所以,可以大致認為提供1.5-1.8倍左右的處理能力。當然,這個只是個很粗的估計。
另外一點是關於速度的提公升。相對於併發而言,對速度的提公升相對有限,因為在每台機器上都是對整個資料庫進行操作。但是,如果乙個資料庫伺服器的負載少了將近一半,其速度也是可能會有乙個明顯的提公升的。
至於在資料庫路由器進行路由分配時的時間與資源消耗,是很小的,可以忽略不計。除非你是做數量極大的特別簡單的資料庫操作。
資料庫集群原理
對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大 而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的 就知道了 並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的...
談資料庫集群的原理與效能
對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大 而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的 就知道了 並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的...
資料庫原理
基本內容 acid與cap 資料庫事務可能引發的問題 資料庫鎖的型別 封鎖協議 兩段鎖協議 資料庫隔離級別 mvcc的實現步驟 mysql事務如何實現 資料庫鎖如何實現 xa兩段提交協議。1.acid是資料庫事務正確執行的四個基本要素 原子性 事務是資料庫併發控制的最小單位,要麼全部提交成功,要麼全...