凡分布式系統(tǒng),都不可避免地要應對一致性要求。
但在分布式系統(tǒng)中,很少有產(chǎn)品啟用緩存。因為除了需要采用NVRAM/NVDIMM來做掉電保護之外,最重要的是解決分布式緩存的一個關鍵問題——Cache Coherency(緩存一致性)。
➤ 這個問題,戴爾易安信Isilon解決了。
一騎絕塵的橫向擴展NAS.....
戴爾易安信的Isilon是一個分布式集群NAS系統(tǒng),支持主流的網(wǎng)絡文件系統(tǒng)、對象、REST、SWIFT、HDFS等訪問協(xié)議。Isilon系統(tǒng)分為三個子型號:F、H、A。
Isilon F800 All-Flash▼
Isilon還擁有一系列的數(shù)據(jù)管理軟件功能,包括:INSIGHTIQ、SMARTPOOLS、SMARTQUOTAS、SMARTCONNECT、SNAPSHOTIQ、CLOUDPOOLS、SMARTDEDUPE、SYNCIQ、SMARTLOCK、ASPERA。
Isilon的核心是OneFS集群文件系統(tǒng)。作為一個分布式、對稱式、并行集群文件系統(tǒng),OneFS將傳統(tǒng)存儲體系結(jié)構(gòu)的文件系統(tǒng)、卷管理器和數(shù)據(jù)保護三層合并為一個統(tǒng)一的軟件層,從而構(gòu)建了一個跨集群中所有節(jié)點的單一智能文件系統(tǒng)。
分布式緩存的挑戰(zhàn).....
OneFS屬于對稱式集群,這意味著任何一個節(jié)點均可以承載I/O訪問,由此也帶來一個問題,比如節(jié)點1和節(jié)點2同時緩存了數(shù)據(jù)A,Host1向節(jié)點1發(fā)起寫請求更改了數(shù)據(jù)A為B,那么此時節(jié)點2上的數(shù)據(jù)A就必須立即作廢。
我們不妨先看看PowerMax這個分布式集群SAN系統(tǒng)是如何處理緩存一致性問題的。戴爾易安信的PowerMax采用Hash方式來確定某個數(shù)據(jù)塊唯一的緩存節(jié)點,這樣就不存在緩存一致性的問題,但代價是需要跨節(jié)點產(chǎn)生數(shù)據(jù)流量,而不僅僅是控制流量,因為此時數(shù)據(jù)需要在多個節(jié)點中傳來傳去。
比如數(shù)據(jù)塊A只能緩存在節(jié)點1,如果節(jié)點2需要訪問數(shù)據(jù)塊A,則先計算Hash得出數(shù)據(jù)塊A所在的節(jié)點,然后向該節(jié)點發(fā)送請求讓其傳遞數(shù)據(jù)塊A的部分或全部到節(jié)點2,再將數(shù)據(jù)發(fā)送給Host端,同時節(jié)點2將數(shù)據(jù)塊A從其本地緩沖區(qū)刪除,不能作為下次訪問使用,因為節(jié)點2根本不知道數(shù)據(jù)塊A在其他節(jié)點上是否已經(jīng)發(fā)生了變化。
Isilon如何實現(xiàn)緩存一致性.....
這時大家自然想到,如果數(shù)據(jù)塊A的變化情況能讓集群中所有節(jié)點都知道,廣播出去,不就可以保證數(shù)據(jù)一致性了么?
沒錯,多核心多CPU其實也是一個分布式集群,它就是這么管理緩存的,借助于核間、片間高帶寬低時延網(wǎng)絡,能夠讓分布式緩存的訪存時延降低到一個可接受的范圍內(nèi)。緩存一致性協(xié)議規(guī)定了多個緩存之間在什么時候傳送什么消息、以什么方式問答等。比如Intel使用MESIF協(xié)議,AMD使用MOESI協(xié)議。
Isilon的OneFS采用了與CPU類似的緩存一致性協(xié)議實現(xiàn)了緩存一致性,而開發(fā)這套協(xié)議需要相當?shù)募夹g(shù)水平。
Isilon采用Infiniband互聯(lián),以Sockets Direct Protocol (SDP) over InfiniBand (IB)實現(xiàn)節(jié)點間同步,采用MESI協(xié)議實現(xiàn)緩存一致性。
MESI表示每個緩存行的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
每個節(jié)點均記錄本地緩存行的狀態(tài),決定是否要發(fā)出廣播。比如訪問一個E狀態(tài)的緩存行,就無需通知其他節(jié)點,因為E表示該緩存行只存在于本地,其他節(jié)點沒有緩存。
不得不說,Isilon通過軟件把CPU集群所采用的緩存一致性協(xié)議搬移到了集群節(jié)點間,這種正宗的分布式緩存實現(xiàn),在市面上的分布式集群系統(tǒng)中是不多見的。所謂品質(zhì)決定市場表現(xiàn),Isilon之所以能成為全球存儲市場上的橫向擴展架構(gòu)典范,與其獨特的開創(chuàng)性特色是分不開的。