凡分布式系統,都不可避免地要應對一致性要求。
但在分布式系統中,很少有產(chǎn)品啟用緩存。因為除了需要采用NVRAM/NVDIMM來(lái)做掉電保護之外,最重要的是解決分布式緩存的一個(gè)關(guān)鍵問(wèn)題——Cache Coherency(緩存一致性)。
➤ 這個(gè)問(wèn)題,戴爾易安信Isilon解決了。
一騎絕塵的橫向擴展NAS.....

戴爾易安信的Isilon是一個(gè)分布式集群NAS系統,支持主流的網(wǎng)絡(luò )文件系統、對象、REST、SWIFT、HDFS等訪(fǎng)問(wèn)協(xié)議。Isilon系統分為三個(gè)子型號:F、H、A。
Isilon F800 All-Flash▼

Isilon還擁有一系列的數據管理軟件功能,包括:INSIGHTIQ、SMARTPOOLS、SMARTQUOTAS、SMARTCONNECT、SNAPSHOTIQ、CLOUDPOOLS、SMARTDEDUPE、SYNCIQ、SMARTLOCK、ASPERA。
Isilon的核心是OneFS集群文件系統。作為一個(gè)分布式、對稱(chēng)式、并行集群文件系統,OneFS將傳統存儲體系結構的文件系統、卷管理器和數據保護三層合并為一個(gè)統一的軟件層,從而構建了一個(gè)跨集群中所有節點(diǎn)的單一智能文件系統。

分布式緩存的挑戰.....
OneFS屬于對稱(chēng)式集群,這意味著(zhù)任何一個(gè)節點(diǎn)均可以承載I/O訪(fǎng)問(wèn),由此也帶來(lái)一個(gè)問(wèn)題,比如節點(diǎn)1和節點(diǎn)2同時(shí)緩存了數據A,Host1向節點(diǎn)1發(fā)起寫(xiě)請求更改了數據A為B,那么此時(shí)節點(diǎn)2上的數據A就必須立即作廢。
我們不妨先看看PowerMax這個(gè)分布式集群SAN系統是如何處理緩存一致性問(wèn)題的。戴爾易安信的PowerMax采用Hash方式來(lái)確定某個(gè)數據塊唯一的緩存節點(diǎn),這樣就不存在緩存一致性的問(wèn)題,但代價(jià)是需要跨節點(diǎn)產(chǎn)生數據流量,而不僅僅是控制流量,因為此時(shí)數據需要在多個(gè)節點(diǎn)中傳來(lái)傳去。
比如數據塊A只能緩存在節點(diǎn)1,如果節點(diǎn)2需要訪(fǎng)問(wèn)數據塊A,則先計算Hash得出數據塊A所在的節點(diǎn),然后向該節點(diǎn)發(fā)送請求讓其傳遞數據塊A的部分或全部到節點(diǎn)2,再將數據發(fā)送給Host端,同時(shí)節點(diǎn)2將數據塊A從其本地緩沖區刪除,不能作為下次訪(fǎng)問(wèn)使用,因為節點(diǎn)2根本不知道數據塊A在其他節點(diǎn)上是否已經(jīng)發(fā)生了變化。
Isilon如何實(shí)現緩存一致性.....
這時(shí)大家自然想到,如果數據塊A的變化情況能讓集群中所有節點(diǎn)都知道,廣播出去,不就可以保證數據一致性了么?
沒(méi)錯,多核心多CPU其實(shí)也是一個(gè)分布式集群,它就是這么管理緩存的,借助于核間、片間高帶寬低時(shí)延網(wǎng)絡(luò ),能夠讓分布式緩存的訪(fǎng)存時(shí)延降低到一個(gè)可接受的范圍內。緩存一致性協(xié)議規定了多個(gè)緩存之間在什么時(shí)候傳送什么消息、以什么方式問(wèn)答等。比如Intel使用MESIF協(xié)議,AMD使用MOESI協(xié)議。
Isilon的OneFS采用了與CPU類(lèi)似的緩存一致性協(xié)議實(shí)現了緩存一致性,而開(kāi)發(fā)這套協(xié)議需要相當的技術(shù)水平。
Isilon采用Infiniband互聯(lián),以Sockets Direct Protocol (SDP) over InfiniBand (IB)實(shí)現節點(diǎn)間同步,采用MESI協(xié)議實(shí)現緩存一致性。
MESI表示每個(gè)緩存行的4種狀態(tài):
M – Modified: The data exists only in local cache, and has been changed from the value in shared cache. Modified data is typically referred to as dirty.
E – Exclusive: The data exists only in local cache, but matches what is in shared cache. This data is often referred to as clean.
S – Shared: The data in local cache may also be in other local caches in the cluster.
I – Invalid: A lock (exclusive or shared) has been lost on the data
每個(gè)節點(diǎn)均記錄本地緩存行的狀態(tài),決定是否要發(fā)出廣播。比如訪(fǎng)問(wèn)一個(gè)E狀態(tài)的緩存行,就無(wú)需通知其他節點(diǎn),因為E表示該緩存行只存在于本地,其他節點(diǎn)沒(méi)有緩存。
不得不說(shuō),Isilon通過(guò)軟件把CPU集群所采用的緩存一致性協(xié)議搬移到了集群節點(diǎn)間,這種正宗的分布式緩存實(shí)現,在市面上的分布式集群系統中是不多見(jiàn)的。所謂品質(zhì)決定市場(chǎng)表現,Isilon之所以能成為全球存儲市場(chǎng)上的橫向擴展架構典范,與其獨特的開(kāi)創(chuàng )性特色是分不開(kāi)的。