《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 低成本分布式郵件備份系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
低成本分布式郵件備份系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2012年第5期
劉 波,,楊 強(qiáng)
(趨勢(shì)科技中國研發(fā)中心,,江蘇 南京 210012)
摘要: 為了利用廉價(jià)的普通桌面電腦構(gòu)建高性能、高可靠、低成本的電子郵件備份系統(tǒng),,設(shè)計(jì)了基于SOA的對(duì)等網(wǎng)絡(luò)存儲(chǔ)架構(gòu),,貫徹了低耦合、無狀態(tài),、異步通信和自適應(yīng)的設(shè)計(jì)原則,。系統(tǒng)將輸入數(shù)據(jù)流和輸出數(shù)據(jù)流分開處理,,分別將郵件數(shù)據(jù)和索引信息保存在磁盤文件和數(shù)據(jù)庫中,,兼顧了高容量和快速查找的的要求。
Abstract:
Key words :

摘  要: 為了利用廉價(jià)的普通桌面電腦構(gòu)建高性能,、高可靠,、低成本電子郵件備份系統(tǒng),設(shè)計(jì)了基于SOA的對(duì)等網(wǎng)絡(luò)存儲(chǔ)架構(gòu),,貫徹了低耦合,、無狀態(tài)、異步通信和自適應(yīng)的設(shè)計(jì)原則,。系統(tǒng)將輸入數(shù)據(jù)流和輸出數(shù)據(jù)流分開處理,,分別將郵件數(shù)據(jù)和索引信息保存在磁盤文件和數(shù)據(jù)庫中,兼顧了高容量和快速查找的的要求,。
關(guān)鍵詞: 電子郵件,;備份;分布式存儲(chǔ),;SOA,;低成本

 在一個(gè)在線電子郵件掃描系統(tǒng)中,需要設(shè)計(jì)一個(gè)安全可靠的存儲(chǔ)系統(tǒng),,暫時(shí)保存被隔離的電子郵件,。這些郵件一直保留在系統(tǒng)內(nèi),直到用戶選擇釋放或者到期失效,。這是一個(gè)需要精心設(shè)計(jì)的系統(tǒng),,考慮牽涉到的數(shù)據(jù)量和在線系統(tǒng)所要求的高可靠性,如何用盡可能低的成本實(shí)現(xiàn)這個(gè)系統(tǒng),,成為項(xiàng)目團(tuán)隊(duì)面對(duì)的主要挑戰(zhàn),。
1 分布式郵件備份系統(tǒng)的技術(shù)需求和設(shè)計(jì)原則
 郵件備份系統(tǒng)最基本的要求是高吞吐量,具體來講,,要求能達(dá)到每秒1 000封郵件(平均大小10 KB)的最大輸入速度,,用戶的郵件要能保存最多60天,系統(tǒng)總?cè)萘吭?0 TB以上,,用戶的檢索速度應(yīng)該控制在1 s以內(nèi),。
 作為一個(gè)商業(yè)運(yùn)營的在線系統(tǒng),除了具備很高的性能以外,,還要具備很高的可靠性和盡可能低的成本,。系統(tǒng)的SLA[1](Service Level Agreement)要達(dá)到99.99%以上,,也就是說運(yùn)行一年的停機(jī)時(shí)間必須控制在52 min以內(nèi)。在線系統(tǒng)的主要成本包括數(shù)據(jù)中心的成本和運(yùn)行維護(hù)成本,。數(shù)據(jù)中心的成本主要由硬件成本,、網(wǎng)絡(luò)成本、其他成本如電費(fèi),、冷卻,、機(jī)架空間等構(gòu)成,而運(yùn)營成本主要由運(yùn)營維護(hù),、技術(shù)支持等費(fèi)用構(gòu)成,。依據(jù)上述基本要求,確定了郵件備份系統(tǒng)的基本技術(shù)需求:(1)單機(jī)高效率,,系統(tǒng)高吞吐,;(2)使用低成本硬件,避免使用昂貴硬件,;(3)提供高可伸縮性,;(4)部署自動(dòng)化;(5)管理智能化,。
 根據(jù)上述需求,,確立系統(tǒng)整體設(shè)計(jì)的原則,主要包括下述四點(diǎn):
?。?)低耦合,。耦合是指系統(tǒng)的子模塊之間結(jié)合的緊密程度,一個(gè)低耦合的系統(tǒng)不但要降低模塊之間的靜態(tài)依賴關(guān)系,,而且要盡可能地降低模塊在時(shí)間和空間上的依賴關(guān)系,。低耦合的系統(tǒng)可以降低模塊之間的相互影響,提高系統(tǒng)的擴(kuò)展性,。
?。?)無狀態(tài)。無狀態(tài)的服務(wù)不在內(nèi)部保留狀態(tài)數(shù)據(jù),,上一個(gè)請(qǐng)求和下一個(gè)請(qǐng)求之間沒有任何關(guān)系,。無狀態(tài)的服務(wù)更容易實(shí)現(xiàn)水平擴(kuò)展。
?。?)異步通信,。異步通信可以提高通信的效率,請(qǐng)求發(fā)送者無需等待服務(wù)的返回,,節(jié)點(diǎn)之間不需要互相等待,,可以提高每個(gè)節(jié)點(diǎn)的處理效率。
 (4)自適應(yīng),。自適應(yīng)的系統(tǒng)能夠自動(dòng)調(diào)整,、優(yōu)化運(yùn)行參數(shù)、應(yīng)對(duì)運(yùn)行環(huán)境的變化,。能夠自我調(diào)整,,也就減少了人為干預(yù)的要求,降低了維護(hù)費(fèi)用,,而且自動(dòng)調(diào)整顯然比人為干預(yù)反應(yīng)更快,、也更準(zhǔn)確,所以也提高了可靠性,。
2 分布式郵件備份系統(tǒng)的設(shè)計(jì)
2.1 整體框架設(shè)計(jì)

 系統(tǒng)的整體設(shè)計(jì)采用SOA[2]的架構(gòu),,系統(tǒng)由三種不同的角色構(gòu)成,其關(guān)系如圖1所示,。

 組件A和B完成系統(tǒng)特定的某些功能,A和B對(duì)外部提供Restful[3]風(fēng)格的Web應(yīng)用接口,,但是A和B之間互相沒有調(diào)用關(guān)系,,也不知道彼此的存在。Registry是一個(gè)注冊(cè)服務(wù)器[4],,所有的組件都在Registry注冊(cè),,并不斷通過心跳信號(hào)更新自己的狀態(tài)到Registry;而且Registry維護(hù)一張系統(tǒng)所有組件的狀態(tài)表,,對(duì)于超時(shí)沒有更新的組件,,就將其從列表中刪除。Helper負(fù)責(zé)將數(shù)據(jù)從一個(gè)組件傳送到另一個(gè)組件,;可以從Registry得到當(dāng)前系統(tǒng)的所有組件清單以及組件之間的邏輯聯(lián)系關(guān)系,,并據(jù)此進(jìn)行數(shù)據(jù)轉(zhuǎn)運(yùn)工作;使用標(biāo)準(zhǔn)的HTTP命令從一個(gè)組件的輸出隊(duì)列得到數(shù)據(jù),,然后同樣用HTTP命令將數(shù)據(jù)發(fā)送到下游的組件,。
同一類型的組件可以同時(shí)有多個(gè)實(shí)例存在,以提供高可靠性和任務(wù)負(fù)載的均衡擴(kuò)充,。Helper本身也可以有多個(gè)實(shí)例存在,,提供多個(gè)上游組件和下游組件之間的動(dòng)態(tài)數(shù)據(jù)交換和負(fù)載均衡。
 組件工作在異步的模式下,,每個(gè)組件都有一個(gè)輸入隊(duì)列和一個(gè)輸出隊(duì)列,,需要處理的數(shù)據(jù)通過Web接口被放進(jìn)輸入隊(duì)列,組件的數(shù)據(jù)處理程序依次從輸入隊(duì)列讀取數(shù)據(jù),,處理完成后放入輸出隊(duì)列,,然后通過Web接口被取走。組件擁有完成處理工作所需要的所有資源和數(shù)據(jù),,可以獨(dú)立完成自己的任務(wù),。這是保證組件異步,、高效工作的重要前提條件。
 一個(gè)最簡(jiǎn)單的系統(tǒng)至少包括三種不同的功能組件,,它們分別是Generator,、Processor和Terminator。它們之間的關(guān)系如圖2所示,。

 Generator是任務(wù)的發(fā)起方,,一個(gè)Generator至少有一個(gè)任務(wù)輸出隊(duì)列和一個(gè)對(duì)應(yīng)的ACK輸入隊(duì)列。Generator產(chǎn)生的任務(wù)數(shù)據(jù)在任務(wù)輸出隊(duì)列中排隊(duì)等候Helper轉(zhuǎn)送到Processor進(jìn)行處理,。一旦一個(gè)任務(wù)被送到Processor,,這個(gè)任務(wù)就被放入一個(gè)等候確認(rèn)的隊(duì)列,等候任務(wù)完成的確認(rèn),。Processor至少有一個(gè)任務(wù)輸入隊(duì)列和一個(gè)結(jié)果輸出隊(duì)列,,即從任務(wù)輸入隊(duì)列取得待處理任務(wù),進(jìn)行處理后放入結(jié)果輸出隊(duì)列,,由Helper送到Terminator,。Terminator對(duì)結(jié)果進(jìn)行最后的處理后,生成對(duì)應(yīng)的ACK,,ACK被送回Generator,,完成一個(gè)完整的任務(wù)處理生命周期。如果Generator在規(guī)定時(shí)間里沒有收到一個(gè)任務(wù)的ACK,,說明這個(gè)任務(wù)可能在系統(tǒng)內(nèi)被丟失了,,按不同的業(yè)務(wù)邏輯,Generator可以重新發(fā)送這個(gè)任務(wù),,也可以丟棄這個(gè)任務(wù),。確認(rèn)-重發(fā)機(jī)制保證了異步系統(tǒng)中數(shù)據(jù)的可靠性問題,較好地解決了節(jié)點(diǎn)失效時(shí)丟失任務(wù)的問題,。此外,,通過Helper橋接的設(shè)計(jì)允許在一個(gè)任務(wù)處理序列里組合多個(gè)不同的Processor來完成復(fù)雜的任務(wù)而不用修改程序,這種重組甚至可以在運(yùn)行中的系統(tǒng)上動(dòng)態(tài)完成,,大大提高了系統(tǒng)的彈性,。
 圖3是郵件備份系統(tǒng)的架構(gòu)圖,主要的組件是QtStorage和QtDAL,。QtStorage負(fù)責(zé)存儲(chǔ)郵件的原始信息(包括郵件的原文,、發(fā)送者、接收者等信息),,將收到的郵件寫入存儲(chǔ)區(qū)域后,,會(huì)將郵件及相關(guān)信息編制成摘要。QtDAL負(fù)責(zé)將郵件的摘要存儲(chǔ)在數(shù)據(jù)庫中,并為用戶提供檢索服務(wù),。為了實(shí)現(xiàn)高效率的運(yùn)作,,存儲(chǔ)系統(tǒng)的設(shè)計(jì)采用了讀寫分開的思想。大量原始數(shù)據(jù)的寫入在QtStorage上完成,,QtStorage擁有多個(gè)實(shí)例,,可以分散寫入的壓力,同時(shí)也能夠提供多重冗余,,實(shí)現(xiàn)高可用性,。QtStorage可以實(shí)現(xiàn)無縫的橫向擴(kuò)展,其存儲(chǔ)能力和容量隨之?dāng)U展,。經(jīng)過QtStorage處理過的摘要信息,,其容量已經(jīng)大大縮減,所以可以采用單一的索引節(jié)點(diǎn)來保存,,單一節(jié)點(diǎn)可以以較低的代價(jià)實(shí)現(xiàn)數(shù)據(jù)的一致性,。這里的QtDAL就是這樣的一個(gè)索引節(jié)點(diǎn),用戶的查找和讀取主要發(fā)生在QtDAL上,,查找和讀取索引信息和數(shù)據(jù)的寫入發(fā)生在不同的節(jié)點(diǎn)上,,這樣就實(shí)現(xiàn)了數(shù)據(jù)的讀寫分開,提高了運(yùn)行效率,。只有在用戶需要取回被隔離的原始郵件時(shí),才會(huì)到QtStorage上去讀取,,按照系統(tǒng)的設(shè)計(jì)邏輯,,這是一個(gè)概率極低的操作,不會(huì)對(duì)系統(tǒng)構(gòu)成很大的影響,。

 

 

2.2 文件存儲(chǔ)服務(wù)
 文件存儲(chǔ)服務(wù)為整個(gè)系統(tǒng)提供原始數(shù)據(jù)的存儲(chǔ)服務(wù),。根據(jù)經(jīng)驗(yàn),這部分的成本是整個(gè)系統(tǒng)成本的主要構(gòu)成部分,。為了保持低成本,,必須避免使用價(jià)格昂貴的高性能存儲(chǔ)設(shè)備,如SAN,、NAS等,。而且為了便于擴(kuò)展和維護(hù),一些需要特別硬件支持的存儲(chǔ)設(shè)備也不能考慮,,如RAID陣列等,。一個(gè)可行的設(shè)計(jì)思路是使用最廉價(jià)的PC和隨機(jī)安裝的硬盤來構(gòu)成系統(tǒng)。商用的PC可以安裝4個(gè)處理核心的CPU和2 TB以上的硬盤,,其性能和容量已經(jīng)足以滿足系統(tǒng)的需求,。但是不論是PC的硬件還是硬盤本身,其可靠性和穩(wěn)定性都不能達(dá)到99.99%的可靠性。解決的方法是用多重冗余的方式構(gòu)建系統(tǒng),,不但數(shù)據(jù)的保存是多重冗余的,,而且處理節(jié)點(diǎn)也是多重冗余的。
2.2.1 數(shù)據(jù)的寫入
 圖4是文件存儲(chǔ)系統(tǒng)的設(shè)計(jì),。Storage 1~3是3個(gè)存儲(chǔ)節(jié)點(diǎn),,各自帶有2 TB的硬盤存儲(chǔ)數(shù)據(jù),并對(duì)外開放3個(gè)Web接口,,分別是接收文件輸入的Input Queue,、輸出文件索引信息的Index Queue和輸出文件同步包的Sync Queue。一個(gè)文件的存儲(chǔ)過程可以用以下步驟描述:

?。?)Helper隨機(jī)挑選一個(gè)Storage節(jié)點(diǎn)(例如Storage 1),,將待保存的文件及控制信息一起發(fā)送到Storage 1的Input Queue。
?。?)Storage 1將文件存盤,,生成文件的索引信息,將索引放到Index Queue,。
?。?)Storage 1修改文件控制信息,將文件和控制信息添加到Sync Queue,。
?。?)Helper從Storage 1的Sync Queue中將待同步文件取出,送到另一個(gè)Storage節(jié)點(diǎn)(例如Storage 2),。
?。?)Helper將索引信息從Storage 1取出,送到數(shù)據(jù)庫保存,。
?。?)Storage 2重復(fù)上述步驟,直到重復(fù)存儲(chǔ)次數(shù)達(dá)到需要的冗余度為止,。
這個(gè)設(shè)計(jì)的主要特點(diǎn)如下:
?。?)每個(gè)Storage節(jié)點(diǎn)都同時(shí)具有處理能力和存儲(chǔ)容量,添加節(jié)點(diǎn)就可以同時(shí)擴(kuò)展處理能力和容量,,系統(tǒng)的擴(kuò)展是對(duì)稱的,,非常利于管理和維護(hù)。
?。?)Storage節(jié)點(diǎn)之間沒有相互依賴性,,任何一個(gè)Storage節(jié)點(diǎn)因?yàn)楣收舷戮€,都不會(huì)對(duì)整個(gè)系統(tǒng)產(chǎn)生影響,。
?。?)每個(gè)文件需要多少冗余度,、是否加密、是否壓縮,,都可以單獨(dú)控制,,非常靈活。
?。?)添加新的Storage節(jié)點(diǎn)后,,負(fù)載會(huì)自動(dòng)均衡到新的節(jié)點(diǎn)上,有利于資源的有效利用,。
?。?)系統(tǒng)要求的保存文件期限最多60天,所以在3冗余或更多冗余的情況下,,可以不用考慮損壞節(jié)點(diǎn)的文件恢復(fù)功能,。即使使用可靠性較低的普通PC和SATA硬盤,也可以保證文件在60天內(nèi)的可用性,。
?。?)讀寫分開,大負(fù)荷的文件寫入被分散到數(shù)量眾多的Storage節(jié)點(diǎn)上,,數(shù)據(jù)庫節(jié)點(diǎn)只負(fù)責(zé)少量,、偶爾的用戶查詢操作,提高了硬件效率,,降低了成本,。
 (7)系統(tǒng)并不是嚴(yán)格一致的,,通過犧牲部分一致性,,獲得了較好的擴(kuò)展性和可用性,是CAP[5]原則的具體實(shí)踐,。
 (8)Storage節(jié)點(diǎn)之間是沒有聯(lián)系,、沒有交互的,,所有的數(shù)據(jù)交換都通過Helper進(jìn)行。文件的控制信息隨同文件數(shù)據(jù)本身傳送,,沒有任何一個(gè)節(jié)點(diǎn)管理和追蹤文件的去向,,各個(gè)節(jié)點(diǎn)間通過合作完成任務(wù),沒有中心控制節(jié)點(diǎn),。這個(gè)過程充分體現(xiàn)了“低耦合”,、“異步”、“無狀態(tài)”的設(shè)計(jì)原則,。
需要說明的是,,Storage節(jié)點(diǎn)的數(shù)目建議大于系統(tǒng)設(shè)置的最高冗余度,。例如對(duì)于3冗余的系統(tǒng),Storage節(jié)點(diǎn)建議至少設(shè)置4個(gè),,這樣,,在某一個(gè)節(jié)點(diǎn)因故下線的時(shí)候,系統(tǒng)仍然可以正常運(yùn)行,。當(dāng)然,,設(shè)置更多的節(jié)點(diǎn)可以獲得更好的可靠性和性能。
2.2.2 數(shù)據(jù)的查詢
 數(shù)據(jù)的查詢相當(dāng)簡(jiǎn)單,,按照用戶提供的查詢條件,,可以在數(shù)據(jù)庫中查詢到符合條件的記錄,每條記錄中都包含對(duì)應(yīng)的數(shù)據(jù)文件在Storage節(jié)點(diǎn)上的位置,。如果用戶需要讀取原始數(shù)據(jù),,可以調(diào)用Storage節(jié)點(diǎn)上的API接口,提供位置信息,,讀取原始數(shù)據(jù),。記錄中包含文件的多個(gè)冗余備份的位置,如果一個(gè)節(jié)點(diǎn)失效或者不能訪問,,可以讀取備用節(jié)點(diǎn)上的信息,。
2.2.3 數(shù)據(jù)的刪除
 數(shù)據(jù)的刪除分為數(shù)據(jù)庫記錄的刪除和數(shù)據(jù)文件的刪除,數(shù)據(jù)庫節(jié)點(diǎn)和Storage節(jié)點(diǎn)都有內(nèi)置的定時(shí)任務(wù),,可以按時(shí)間刪除已經(jīng)過期的數(shù)據(jù),。
2.2.4 系統(tǒng)容量的擴(kuò)展和故障節(jié)點(diǎn)的替換
 當(dāng)文件存儲(chǔ)系統(tǒng)的容量不能滿足要求時(shí),需要對(duì)系統(tǒng)容量進(jìn)行擴(kuò)展,,這種擴(kuò)展應(yīng)該是一種簡(jiǎn)單的,、無縫的操作,不能干擾系統(tǒng)的正常運(yùn)行,,不需要修改軟件,,不需要停機(jī)以及盡量少的配置改動(dòng)。本系統(tǒng)較好地實(shí)現(xiàn)了上述要求,。
2.3 索引數(shù)據(jù)庫
 索引數(shù)據(jù)庫保存著所有備份郵件的索引信息和位置信息,。這是一個(gè)標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫,采用開源的PostgresSQL實(shí)現(xiàn),。數(shù)據(jù)庫主要包括兩張表,,如圖5所示。


 為了提高數(shù)據(jù)的安全性,,可以設(shè)置將備份的郵件在不同節(jié)點(diǎn)上拷貝多份冗余,。圖7即為冗余度設(shè)置為2時(shí)的測(cè)試數(shù)據(jù),考察了不同節(jié)點(diǎn)數(shù)量對(duì)性能的影響,??梢钥吹?,隨著系統(tǒng)節(jié)點(diǎn)數(shù)的增加,系統(tǒng)性能也呈基本線性地增加,,這充分反映了節(jié)點(diǎn)間異步通信的重要性,。異步通信削弱了節(jié)點(diǎn)間在時(shí)間上的依賴關(guān)系,通過犧牲局部的,、臨時(shí)的一致性,,充分發(fā)揮了每個(gè)節(jié)點(diǎn)的處理能力,提高了系統(tǒng)的效率,。

 為了進(jìn)一步提高數(shù)據(jù)可靠性,,可以把冗余度設(shè)置到3,此時(shí)每封郵件在系統(tǒng)內(nèi)有三份拷貝,,達(dá)到了極高的可靠性,。如圖8所示,在4節(jié)點(diǎn)3冗余的測(cè)試環(huán)境下,,系統(tǒng)的吞吐速率達(dá)到了3 000封/s(10 KB郵件)和2 000封/s(30 KB郵件),。如果等價(jià)成單個(gè)節(jié)點(diǎn)的平均速率的話,分別達(dá)到2 250封/s和1 500封/s,,比單節(jié)點(diǎn)的性能還要好些,。這是因?yàn)殡S節(jié)點(diǎn)的增多,不但存儲(chǔ)空間得到擴(kuò)展,、可靠性得到增加,,CPU的數(shù)量和處理能力也得到加強(qiáng),更多的CPU的加入,,也在一定程度上提高了系統(tǒng)的整體處理能力,。

3.3 結(jié)果分析
 通過對(duì)結(jié)果的分析,發(fā)現(xiàn)在單節(jié)點(diǎn)場(chǎng)景下,,采用30 KB郵件樣本時(shí)系統(tǒng)達(dá)到了42 MB/s的寫入速度,,而10 KB郵件的寫入速度為18 MB/s,兩種測(cè)試環(huán)境中CPU占用均為30%左右,,說明系統(tǒng)瓶頸不在CPU和I/O中,。通過對(duì)代碼實(shí)現(xiàn)的審查發(fā)現(xiàn),問題主要是同步寫文件導(dǎo)致的,,對(duì)文件的同步讀寫操作降低了I/O的效率,并且隨樣本的縮小,,讀寫操作的頻繁化而更趨惡化,。這就是為什么小樣本性能不成比例增加的根本原因。全面采用異步磁盤I/O操作可以很好地改善這個(gè)問題,,但是異步I/O程序遠(yuǎn)較同步I/O復(fù)雜,,而且在本項(xiàng)目里,,即使是同步I/O也足夠滿足性能需求,所以本設(shè)計(jì)最后決定保持目前的代碼不變,。
 比較不同組合條件下的測(cè)試結(jié)果可以發(fā)現(xiàn),,性能隨冗余度的增加而降低、隨節(jié)點(diǎn)數(shù)目的增加而提高,,三者間的關(guān)系接近線性關(guān)系,。如果節(jié)點(diǎn)數(shù)目增加一倍,性能也能夠增加一倍,。增加冗余度會(huì)降低性能,,但可以通過增加節(jié)點(diǎn)來補(bǔ)償。同時(shí)添加節(jié)點(diǎn)數(shù)量和冗余度,,能夠得到更好的可靠性和性能,,并且收益并不隨節(jié)點(diǎn)數(shù)目的增加而遞減。對(duì)于一個(gè)分布式系統(tǒng),,這是一個(gè)非??少F的特質(zhì)。因?yàn)楣芾碚呖梢酝ㄟ^簡(jiǎn)單的添加處理節(jié)點(diǎn),,獲取更多的存儲(chǔ)和處理能力,。
 為了最大限度地降低成本、提高可靠性,,在設(shè)計(jì)的初期階段就確立了低耦合,、無狀態(tài)、異步通信和自適應(yīng)這四個(gè)設(shè)計(jì)準(zhǔn)則,。通過放寬對(duì)一致性的要求,,僅保證最終一致性,充分解耦各個(gè)節(jié)點(diǎn)間的依賴關(guān)系,,獲得了優(yōu)異的可靠性和可擴(kuò)展性,。最終的測(cè)試結(jié)果也證明了這種設(shè)計(jì)思路的正確性,采用普通桌面計(jì)算機(jī)和廉價(jià)磁盤組成的系統(tǒng)足以在容量,、性能,、可靠性和可擴(kuò)展性方面滿足要求,而成本僅為傳統(tǒng)方案的十分之一,。
參考文獻(xiàn)
[1] TANENBAUM A S,, STEEN M V. Distributed systems principles and paradigms[M].楊劍鋒,常曉波,,李敏,,譯,北京:清華大學(xué)出版社,,2004.
[2] JOSUTTIS N M. SOA in practice[M].程樺,,譯.北京:電子工業(yè)出版社,,2008.
[3] ROCHARDSON L, RUBY S. RESTful Web Services中文版[M].徐涵,,李紅軍,,胡偉,譯.北京:電子工業(yè)出版社,,2008.
[4] 杜宗霞,, 懷進(jìn)鵬, 主動(dòng)分布式Web服務(wù)注冊(cè)機(jī)制研究與實(shí)現(xiàn)[J]. 軟件學(xué)報(bào),,2006,,17(3):454-462
[5] BREWER E A. Towards robust distributed systems. (Invited Talk)Principles of Distributed Computing, Portland,, Oregon,, July 2000.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。