Lotus 複製技術淺述
複製機制是分散式系統的核心技術。Domino/Notes獨特的複製技術是業界爭相效仿的物件,
但是迄今為止還沒有任何一家在此技術領域能達到Lotus Domino/Notes的技術層次。該項技術
為群件系統關鍵技術,曾經幫助Domino/Notes贏得無數榮譽。下面我們將就此技術進行探討,希
望我們的解釋能消除你們對此技術的疑慮。
為什麼需要複製技術
資訊並非總是可以集中存放在某一個地點,某一臺主機上的。為了系統管理方便我們通常
理想化地試圖把所有資訊集中存放在一個地方、甚至一臺主機上。但是由於多媒體資訊以驚人
的速度生長,海量的資訊常常使我們的網路或者主機系統成為資訊處理的瓶頸。為了解決這些
海量資訊處理問題,由此誕生了分散式處理系統,她可以發揮網路資源的優勢,利用網路上的
各個節點來分擔中央節點的負載。為保證各節點之間協同工作,最大限度的共享資訊資源。因
此就有了分散式系統的資訊同步技術――複製。
Domino/Notes複製技術概述
辦公資訊並非總是從總部流向遠端辦事處和合作夥伴。事實上,大部分資訊來源於整個社
會群體。資訊平臺要能使資訊在組織內部移動,這樣可使所有使用者得到最新的工程專案、最新
的討論或最新的文件。這就表明,資訊平臺應支援各分佈站點採用同時向各個方向繁殖新的或
更新的材料,而不只是從中央源頭帶給接收人。這一複製能力一直是Notes產品面市以來的一個
顯著特色。
Domino/Notes複製技術可以保證分散式資料庫的資料同步、支援移動辦公,其特性包括雙
向與端對端複製、欄位級、選擇性的、可以在後臺進行等,所有的複製操作均採用相同的複製
機制。相對Domino/Notes,目前還沒有其它任何一家產品在單一複製模式下能完成如此精細的
複製控制,而且一般複製是基於文件級操作,不象Domino/Notes一樣是更有效的欄位級,並缺
乏選擇性複製的能力(有些利用的是基於郵件的同步機制。例如:MS Exchange,而不是驗證數
據準確性的同步演算法,另外對於不同的連線速度或頻寬,Exchange採用不同的MTA,更加劇了其
複製機制的不一致性。)。
Domino/Notes複製衝突與併發訪問控制
Domino/Notes是典型的分散式系統,分散式系統的體系結構決定了併發控制的複雜性。解
決併發控制有兩種方案。下面就這兩種方案討論一下其優劣。
第一種方案:採用記錄共享鎖與排它鎖控制併發訪問。此種方案可以解決併發寫操作過程
中更新資料互相覆蓋的問題,但是如果分散式系統節點多、併發使用者量大時將會嚴重影響系統
響應速度。因為如果採用記錄共享鎖與排它鎖控制併發訪問,任何一個使用者開啟編輯系統中的
任何一條記錄或文件時,系統將要對分散式系統每一個資料節點上的該條記錄或文件進行加鎖。
這樣會佔用大量的系統資源,在廣域網頻寬較窄的情況下,尤其會大大影響系統效能。事實上
關聯式資料庫系統採用的就是這種併發控制手段,但是基於上述原因在實際應用中極少採用。
第二種方案:就是Domino/Notes採用的方案。Domino/Notes採用許可權控制的手段儘量避免
讓多個使用者併發修改同一條記錄或文件。由於Domino/Notes許可權控制非常精細,可以指定每條
記錄或文件的作者(只有記錄或文件作者才可以編輯它)。這樣就大大減少了多個使用者編輯同一
條記錄或文件的機會。即使出現多使用者編輯同一條記錄或文件的情況,只要他們修改的不是該
記錄或文件的同一個域(欄位),Domino/Notes在同步複製的時候還是可以進行資訊合併的。也
就是說Domino/Notes會自動識別新修改的資訊並把它儲存下來。如果發生多使用者編輯同一條記
錄或文件同一個域(欄位)資訊的情況(經過上述兩種控制後此種情況發生概率較小),為了避免
更新資料丟失,Domino/Notes會根據資料更新的時間與次數判斷選出一個更新的文件作為主文
檔,另一條文件將會作為衝突文件顯示在主文件下面,使用者可以來決定該資料的取捨。這樣就
最大限度地保護了併發寫操作的資料一致性與完整性,而且不會對分散式系統效能造成不良影
響。
總結
比較上述兩種方案權衡各種利弊得失,我們不難看出Lotus Domino/Notes採用的是一種更
為行之有效的策略來實現系統併發控制問題。複製衝突並不是系統產生的問題而是解決併發寫
操作的一個有效手段。
但是迄今為止還沒有任何一家在此技術領域能達到Lotus Domino/Notes的技術層次。該項技術
為群件系統關鍵技術,曾經幫助Domino/Notes贏得無數榮譽。下面我們將就此技術進行探討,希
望我們的解釋能消除你們對此技術的疑慮。
為什麼需要複製技術
資訊並非總是可以集中存放在某一個地點,某一臺主機上的。為了系統管理方便我們通常
理想化地試圖把所有資訊集中存放在一個地方、甚至一臺主機上。但是由於多媒體資訊以驚人
的速度生長,海量的資訊常常使我們的網路或者主機系統成為資訊處理的瓶頸。為了解決這些
海量資訊處理問題,由此誕生了分散式處理系統,她可以發揮網路資源的優勢,利用網路上的
各個節點來分擔中央節點的負載。為保證各節點之間協同工作,最大限度的共享資訊資源。因
此就有了分散式系統的資訊同步技術――複製。
Domino/Notes複製技術概述
辦公資訊並非總是從總部流向遠端辦事處和合作夥伴。事實上,大部分資訊來源於整個社
會群體。資訊平臺要能使資訊在組織內部移動,這樣可使所有使用者得到最新的工程專案、最新
的討論或最新的文件。這就表明,資訊平臺應支援各分佈站點採用同時向各個方向繁殖新的或
更新的材料,而不只是從中央源頭帶給接收人。這一複製能力一直是Notes產品面市以來的一個
顯著特色。
Domino/Notes複製技術可以保證分散式資料庫的資料同步、支援移動辦公,其特性包括雙
向與端對端複製、欄位級、選擇性的、可以在後臺進行等,所有的複製操作均採用相同的複製
機制。相對Domino/Notes,目前還沒有其它任何一家產品在單一複製模式下能完成如此精細的
複製控制,而且一般複製是基於文件級操作,不象Domino/Notes一樣是更有效的欄位級,並缺
乏選擇性複製的能力(有些利用的是基於郵件的同步機制。例如:MS Exchange,而不是驗證數
據準確性的同步演算法,另外對於不同的連線速度或頻寬,Exchange採用不同的MTA,更加劇了其
複製機制的不一致性。)。
Domino/Notes複製衝突與併發訪問控制
Domino/Notes是典型的分散式系統,分散式系統的體系結構決定了併發控制的複雜性。解
決併發控制有兩種方案。下面就這兩種方案討論一下其優劣。
第一種方案:採用記錄共享鎖與排它鎖控制併發訪問。此種方案可以解決併發寫操作過程
中更新資料互相覆蓋的問題,但是如果分散式系統節點多、併發使用者量大時將會嚴重影響系統
響應速度。因為如果採用記錄共享鎖與排它鎖控制併發訪問,任何一個使用者開啟編輯系統中的
任何一條記錄或文件時,系統將要對分散式系統每一個資料節點上的該條記錄或文件進行加鎖。
這樣會佔用大量的系統資源,在廣域網頻寬較窄的情況下,尤其會大大影響系統效能。事實上
關聯式資料庫系統採用的就是這種併發控制手段,但是基於上述原因在實際應用中極少採用。
第二種方案:就是Domino/Notes採用的方案。Domino/Notes採用許可權控制的手段儘量避免
讓多個使用者併發修改同一條記錄或文件。由於Domino/Notes許可權控制非常精細,可以指定每條
記錄或文件的作者(只有記錄或文件作者才可以編輯它)。這樣就大大減少了多個使用者編輯同一
條記錄或文件的機會。即使出現多使用者編輯同一條記錄或文件的情況,只要他們修改的不是該
記錄或文件的同一個域(欄位),Domino/Notes在同步複製的時候還是可以進行資訊合併的。也
就是說Domino/Notes會自動識別新修改的資訊並把它儲存下來。如果發生多使用者編輯同一條記
錄或文件同一個域(欄位)資訊的情況(經過上述兩種控制後此種情況發生概率較小),為了避免
更新資料丟失,Domino/Notes會根據資料更新的時間與次數判斷選出一個更新的文件作為主文
檔,另一條文件將會作為衝突文件顯示在主文件下面,使用者可以來決定該資料的取捨。這樣就
最大限度地保護了併發寫操作的資料一致性與完整性,而且不會對分散式系統效能造成不良影
響。
總結
比較上述兩種方案權衡各種利弊得失,我們不難看出Lotus Domino/Notes採用的是一種更
為行之有效的策略來實現系統併發控制問題。複製衝突並不是系統產生的問題而是解決併發寫
操作的一個有效手段。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-401653/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux零複製技術淺析Linux
- Linux--寫時複製(Copy-On-Write,COW)技術簡述Linux
- Java引用複製、淺複製、深複製Java
- 淺複製與深複製
- MySQL的零複製技術MySql
- JS物件複製:深複製和淺複製JS物件
- python 淺複製、深複製坑Python
- python 深複製和淺複製Python
- JavaScript 淺複製和深複製JavaScript
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- Redis 主從複製技術原理Redis
- go的深複製跟淺複製Go
- go slice深複製和淺複製Go
- 淺談JS中物件的淺複製和深複製JS物件
- 資料複製策略綜述
- js 淺拷貝(淺複製、淺克隆)、深拷貝(深複製、深克隆)JS
- JavaScript中的淺複製與深複製JavaScript
- MySQL組複製MGR(一)-- 技術概述MySql
- MySQL入門--複製技術介紹MySql
- MySQL組複製(MGR)全解析 Part 2 常用複製技術介紹MySql
- python深複製和淺複製的區別Python
- 淺顯直白的Python深複製與淺複製區別說明Python
- Day 7.5 資料型別總結 + 複製 淺複製 深複製資料型別
- 對於複製普通物件 深複製和淺複製是否一樣物件
- 一文搞懂Linux零複製技術Linux
- 複製“李佳琦”的N道技術題
- 25. 深淺複製
- python 的深淺複製Python
- C#中的物件深複製和淺複製C#物件
- 詳談Javascript中的深複製和淺複製JavaScript
- MySQL高可用之組複製技術(3):配置多主模型的組複製MySql模型
- MySQL高可用之組複製技術(2):配置單主模型的組複製MySql模型
- 深淺複製,溫故知新
- 淺複製導致的bug
- Python列表的深淺複製Python
- js 淺複製和深複製的區別和應用JS
- 資料共享(淺複製)與資料獨立(深複製)
- Java 中的深複製和淺複製你瞭解嗎?Java
- 使用零複製技術提高儲存系統效能