通信電纜 網(wǎng)絡(luò)設(shè)備 無(wú)線通信 云計(jì)算|大數(shù)據(jù) 顯示設(shè)備 存儲(chǔ)設(shè)備 網(wǎng)絡(luò)輔助設(shè)備 信號(hào)傳輸處理 多媒體設(shè)備 廣播系統(tǒng) 智慧城市管理系統(tǒng) 其它智慧基建產(chǎn)品
深圳市飛宇光纖系統(tǒng)有限公司
閱讀:784發(fā)布時(shí)間:2016-5-19
異地機(jī)房,兩地雙活,WDM波分互聯(lián)。
缺少了大容量、高速率的波分互聯(lián),結(jié)構(gòu)功能便難以實(shí)現(xiàn)了。
*部分:WDM復(fù)制鏈路
1.1 鏈路類(lèi)型
鏈路,來(lái)根線連接起來(lái),不就可以了么?沒(méi)問(wèn)題,光纖連起來(lái),這就是鏈路。
當(dāng)你在同一個(gè)機(jī)房,你可以直接婁十芯光纖連接,很簡(jiǎn)單。
如果是一座樓內(nèi),甚至一個(gè)園區(qū)內(nèi),管井你可以隨便用,鋪設(shè)一根48芯光纜,沒(méi)多少錢(qián)。
問(wèn)題是本地和遠(yuǎn)端相隔太遠(yuǎn),出了園區(qū),你就不能隨便在兩個(gè)樓之間飛一根線了,必須租用電信部門(mén)提供的各種線路了,當(dāng)然,點(diǎn)對(duì)點(diǎn)無(wú)線傳輸也是個(gè)可以考慮的路子,如果兩樓之間相隔不太遠(yuǎn)且視覺(jué)直達(dá),到可以考慮這種方式。
電信部門(mén)有各種鏈路或者共享鏈路提供出租,zui原始的一種就是裸光纖,兩地之間直接通過(guò)電信部門(mén)部署好的光纜,其中分出兩根纖芯給你。當(dāng)然,電信部門(mén)會(huì)有中繼站,負(fù)責(zé)對(duì)光信號(hào)的路徑交叉及信號(hào)增強(qiáng)中繼。因?yàn)椴豢赡苋我鈨牲c(diǎn)間都恰好有光纖直連,必須通過(guò)中繼和交叉。有了裸光纖,你兩端跑什么信號(hào)什么協(xié)議什么速率就隨你了,只要光模塊的波長(zhǎng)功率合適,兩端就可以連通。
裸光纖不能走太遠(yuǎn)距離,一個(gè)是價(jià)格太貴另一個(gè)是電信部門(mén)也不可能租給你用,因?yàn)榫嚯x太遠(yuǎn)的時(shí)候,光纜資源越來(lái)越稀缺,不可能讓你獨(dú)占一根,實(shí)際上近距離傳輸也很少有人用裸光纖了,尤其是大城市,因?yàn)?/span>光纖資源很稀缺,除非互聯(lián)網(wǎng)這種體量的用戶,其他基本都是租用與別人貢獻(xiàn)的某種虛擬鏈路(簡(jiǎn)單說(shuō)就是電路、通道資源)。上到電信部門(mén)的IP網(wǎng),或者直接上到SDH同步環(huán)網(wǎng),不同的方式和速率,價(jià)格也不同。
(存儲(chǔ)設(shè)備一般都支持iSCSI協(xié)議復(fù)制,那么此時(shí)可以接入使用以太網(wǎng)作為zui終連接方式的比如ADSL、GEPON等,如果僅支持FC協(xié)議復(fù)制,要么增加一個(gè)FC轉(zhuǎn)IP路由器再接入IP網(wǎng),要么使用局端提供的FC協(xié)議轉(zhuǎn)換設(shè)備直接上SDH同步網(wǎng)。)
裸光纖一來(lái)資源緊張,二來(lái)它租賃的價(jià)格也不低。zui重要的它容量大,可以使用波分進(jìn)行擴(kuò)容。使用DWDM設(shè)備是可以在一路光纖上目前復(fù)用高達(dá)80路光波的。對(duì)于現(xiàn)在電信的骨干網(wǎng),就是這樣的結(jié)構(gòu),2根88芯光纜,上80路DWDM,每路跑10G,可以跑上6個(gè)T的互聯(lián)帶寬。
1.2何為WDM
所謂的波分復(fù)用(WDM, Wavelength Division Multiplexing)其本質(zhì)上也是頻分復(fù)用而已。WDM是在1根光纖上承載多個(gè)波長(zhǎng)(信道)系統(tǒng),將1根光纖轉(zhuǎn)換為多條通道Channel,當(dāng)然每條Channel獨(dú)立工作在不同波長(zhǎng)上,這樣極大地提高了光纖的傳輸容量。就像是調(diào)速公路上不同的車(chē)道。
由于WDM系統(tǒng)技術(shù)的經(jīng)濟(jì)性與有效性,使之成為當(dāng)前光纖通信網(wǎng)絡(luò)擴(kuò)容的主要手段。波分復(fù)用技術(shù)作為一種系統(tǒng)概念,通常有3種復(fù)用方式,即1310 nm、1490 nm和1550nm波長(zhǎng)的波分復(fù)用、粗波分復(fù)用(CWDM,Coarse Wavelength Division Multiplexing)和密波分復(fù)用(DWDM,Dense Wavelength Division Multiplexing)。
第1種相對(duì)簡(jiǎn)單一些,通過(guò)FWDM就能實(shí)現(xiàn),在EPON、GPON以及三網(wǎng)融合中非常常用。
這次主要說(shuō)的是后面2種,CWDM,DWDM。因?yàn)檫@兩種在擴(kuò)展的容量大,粗波分能擴(kuò)展到16通道,密波分?jǐn)U展20、40、80都可以。以當(dāng)前主流技術(shù),每個(gè)通道能跑單向10Gbps。以下面這種為例16CH的CWDM做成雙纖的傳輸,便能達(dá)到160G。
40波 在DWDM
粗波分、密波分的核心是無(wú)源的波分,他不帶電,也是透明的,你可以傳SDH、ATM、IP、FC都可以。相當(dāng)于他提供車(chē)道,你開(kāi)什么車(chē)都可以,只要走對(duì)道路了。他要求的只有一個(gè),波長(zhǎng)對(duì)應(yīng)。像交換機(jī)上的光模塊,如果要走波分,組建波分系統(tǒng)的時(shí)候就要注意波長(zhǎng)了?,F(xiàn)在不管是千兆的SFP,還是萬(wàn)兆的SFP+、舊的XFP,都有粗波分、密波分波長(zhǎng)的光模塊,由于波分上要求更高更精細(xì)了,(普通模塊波長(zhǎng)寬度60nm,而粗波的波長(zhǎng)示要15nm,密波波長(zhǎng)要求1.6nm),波分光模塊的價(jià)格是普通光模塊婁倍。
普通的光模塊是不能走上波分的。就像你開(kāi)飛機(jī)上道,會(huì)壓別人的道,這是不允許的。要用就單獨(dú)自己2芯光纖傳輸吧。
波長(zhǎng)為1563.86nm 的10G DWDM光模塊。
在存儲(chǔ)上,一般還是用FC,當(dāng)然也有IP-SAN的,就看你的配置了。IP的一般是1.25G和10G,FC和1xFC的1G、2xFC的2G、4xFC的4G、8xFC的8G,波分可以讓你傳。
接下來(lái)就要控制的就是業(yè)務(wù)數(shù)量了,你有多少路10G,或者多少路8G,這個(gè)在波分上需要做夠通道。
兩機(jī)房業(yè)務(wù)都接進(jìn)波分后,兩機(jī)房的波分就需要用裸光纖來(lái)連接,實(shí)現(xiàn)傳輸。回歸光纖傳輸zui基本的問(wèn)題:光功率。直接會(huì)關(guān)系到傳輸好壞。主要由光模塊的收發(fā)光強(qiáng)、線路及跳接和波分的衰減來(lái)決定。這需要計(jì)算。
飛宇光電 2U機(jī)架式 OEO
飛宇光電 1U機(jī)架式 EDFA
當(dāng)鏈路距離很遠(yuǎn),鏈路衰減好的情況下,超過(guò)60KM,就需要加放大器或中繼器,對(duì)于粗波,按現(xiàn)在術(shù)要用OEO中繼。對(duì)于密波,則有一種偉大的放大器叫EDFA,他可以把所有通道的光一起放大,超遠(yuǎn)距還會(huì)設(shè)計(jì)色散、噪聲、非線性效應(yīng)等。
當(dāng)傳輸很重要的時(shí)候,我們還需要做線路保護(hù),因?yàn)橛袝r(shí)候地方施工,你的線路很可能會(huì)被挖斷!上年啊里杭州的光纖就被斷過(guò)一次。在波分層面,可以通過(guò)多租一條不同路由的線路,分別上2套不同的波分作備份。也可以通過(guò)光纖線路切換設(shè)備來(lái)實(shí)現(xiàn),好處是可以減少1套波分設(shè)備,壞處是1他增加損耗了2是他也有可能會(huì)壞。
配置波分鏈路,需要專(zhuān)業(yè)做波分的公司來(lái)弄。我在公司負(fù)責(zé)波分鏈路設(shè)計(jì),從初學(xué)到現(xiàn)在,深有體會(huì)。
上面說(shuō)的基本都是物理層的東西
接下來(lái)更貼近鏈路層的內(nèi)容
1.3 長(zhǎng)肥管道效應(yīng)鏈路的時(shí)延除了與距離有關(guān)之外,還與鏈路上的各個(gè)局端中繼和轉(zhuǎn)換設(shè)備數(shù)量有關(guān)。光在光纖中傳播靠的是全反射,等效速度為每秒20萬(wàn)千米,而更多時(shí)延則是由信號(hào)轉(zhuǎn)換和中繼設(shè)備引入的,電信運(yùn)營(yíng)商的網(wǎng)絡(luò)可分為接入網(wǎng)和骨干網(wǎng),本地的信號(hào)比如以太網(wǎng)或者FC,先被封裝成接入設(shè)備所允許的信號(hào),比如GPON等,再視專(zhuān)線類(lèi)型,上傳到以太網(wǎng)交換機(jī)、路由器或者直接到局端骨干網(wǎng)入口設(shè)備比如OTN。在這種高時(shí)延鏈路之下,每發(fā)送一個(gè)數(shù)據(jù)包,要等待較長(zhǎng)時(shí)間才能得到ack,此時(shí)如果源端使用同步復(fù)制,性能將非常差,鏈路帶寬根本無(wú)法利用起來(lái),太高時(shí)延的鏈路必須使用異步復(fù)制。應(yīng)用端同步IO模式+同步復(fù)制,這種場(chǎng)景是吞吐量zui差的場(chǎng)景,異步IO+同步復(fù)制,效果其實(shí)尚可,的還是異步復(fù)制(不管同步還是異步IO)。不管是異步復(fù)制還是同步復(fù)制,如果使用了FCP或者TCP這種有滑動(dòng)窗口的傳輸協(xié)議,那么難免會(huì)遇到傳輸卡殼,TCP有個(gè)zui大可容忍未ACK的buffer量,傳輸?shù)臄?shù)據(jù)達(dá)到這個(gè)buffer,就必須停止發(fā)送,而必須等待ack返回,只要一卡殼,鏈路上這段時(shí)間內(nèi)就不會(huì)有數(shù)據(jù)傳送,嚴(yán)重降低了傳輸帶寬,為此,專(zhuān)業(yè)一點(diǎn)的存儲(chǔ)設(shè)備都要支持多鏈接復(fù)制,向?qū)Χ税l(fā)起多個(gè)tcp鏈接,在一條鏈接卡殼的時(shí)候,另一條正在傳輸數(shù)據(jù),這個(gè)與數(shù)字通信領(lǐng)域常用的多VC/隊(duì)列/緩沖道理是一樣的,一個(gè)VC由于某種策略導(dǎo)致卡殼的時(shí)候,其他VC流量一樣會(huì)利用起底層鏈路的帶寬。
第二部分:雙活數(shù)據(jù)中心
2.1 雙活并發(fā)訪問(wèn)的底層機(jī)制從存儲(chǔ)系統(tǒng)的視角來(lái)看雙活數(shù)據(jù)中心,怎么個(gè)雙活法?應(yīng)用首先得雙活,應(yīng)用不雙活,就無(wú)所謂雙活數(shù)據(jù)中心。也就是多個(gè)實(shí)例可以共同處理同一份數(shù)據(jù),而不是各處理各的(互備,或者說(shuō)非對(duì)稱雙活)誰(shuí)壞了對(duì)方接管,支持多活的應(yīng)用典型比如Oracle RAC、各類(lèi)集群文件系統(tǒng)等,這些應(yīng)用的每個(gè)實(shí)例之間是可以相互溝通的,相互傳遞各種鎖信息及元數(shù)據(jù)信息,從而實(shí)現(xiàn)多活。一般來(lái)講,這類(lèi)多活應(yīng)用,其多個(gè)實(shí)例一定要看到同一份數(shù)據(jù),如果這同一份數(shù)據(jù)有多個(gè)副本,那么一定要保證著多個(gè)副本之間是時(shí)刻一樣的(有些互聯(lián)網(wǎng)應(yīng)用除外,不要求實(shí)時(shí)一致性),這與多核心多路CPU的Cache Coherency思想是一樣的(具體可以看本公眾號(hào)zui早的一篇文章”聊聊CAPI“,所以冬瓜哥一直認(rèn)為底層通了,一通百通)。所以,要么讓這多個(gè)應(yīng)用實(shí)例所在的主機(jī)通過(guò)網(wǎng)絡(luò)的方式共享訪問(wèn)同一個(gè)數(shù)據(jù)卷,比如使用SAN(多活數(shù)據(jù)庫(kù)比如Oracle RAC,或者共享式集群文件系統(tǒng),這兩類(lèi)多活應(yīng)用需要訪問(wèn)塊設(shè)備)或者NAS(有些非線編集群應(yīng)用可以使用NAS目錄),用這種方式,數(shù)據(jù)卷或者目錄只有*的一份而且天生支持多主機(jī)同時(shí)訪問(wèn)。在這個(gè)基礎(chǔ)上,如果將這份數(shù)據(jù)卷鏡像一份放到遠(yuǎn)端數(shù)據(jù)中心的話,而且保持源卷和鏡像卷時(shí)刻*一致(同步復(fù)制),那么多活應(yīng)用就可以跨數(shù)據(jù)中心部署了,多活應(yīng)用看到的還是同一份數(shù)據(jù),只不過(guò)本地實(shí)例看到本地的數(shù)據(jù)卷,遠(yuǎn)端實(shí)例看到遠(yuǎn)端的數(shù)據(jù)卷,數(shù)據(jù)卷在底層用同步復(fù)制實(shí)現(xiàn)*一致,這與在本地多個(gè)應(yīng)用實(shí)例看到*一份數(shù)據(jù)卷副本的效果是一模一樣的,這也就做到了多活,能夠在整個(gè)數(shù)據(jù)中心全部當(dāng)?shù)魰r(shí),短時(shí)間內(nèi)幾乎無(wú)縫業(yè)務(wù)接管。
但是,實(shí)現(xiàn)這種雙活,也就是讓存儲(chǔ)系統(tǒng)在底層實(shí)現(xiàn)“源卷和鏡像卷時(shí)刻一致”,并不是那么簡(jiǎn)單的事情。首先,傳統(tǒng)容災(zāi)數(shù)據(jù)復(fù)制技術(shù)里,業(yè)務(wù)是冷啟動(dòng)(災(zāi)備端應(yīng)用主機(jī)不開(kāi)機(jī))或者暖啟動(dòng)(災(zāi)備端應(yīng)用主機(jī)開(kāi)機(jī)但是應(yīng)用實(shí)例不啟動(dòng),比如Windows下對(duì)應(yīng)的服務(wù)設(shè)置為“手動(dòng)”啟動(dòng)),這個(gè)極大節(jié)省了開(kāi)發(fā)難度,災(zāi)備端存儲(chǔ)系統(tǒng)所掌管的鏡像卷,不需要掛起給上層應(yīng)用提供數(shù)據(jù)IO,而只需要接收源卷復(fù)制過(guò)來(lái)的數(shù)據(jù)即可。而多活場(chǎng)景下,應(yīng)用實(shí)例在災(zāi)備端也是啟動(dòng)而且有業(yè)務(wù)IO的,那就意味著,源卷和鏡像卷都要支持同時(shí)被寫(xiě)入,而且每一筆寫(xiě)入都要同步到對(duì)端之后才能ACK,這種方式稱之為“雙寫(xiě)”,以及“雙向同步”,只有這樣,才能做到兩邊的實(shí)例看到的底層數(shù)據(jù)卷是一模一樣的,而不是其中某個(gè)實(shí)例看到的是歷史狀態(tài),而其他實(shí)例看到了狀態(tài),后者是不能發(fā)生的,否則應(yīng)用輕則數(shù)據(jù)不一致,重則直接崩潰。這種雙寫(xiě)雙向同步,看似簡(jiǎn)單,同步不就行了么?其實(shí),不了解底層的人可能也就到這一步了,然后就去出去裝逼去了,殊不知,很多坑你都沒(méi)有填,說(shuō)不定哪天就把自己給裝死了。
存儲(chǔ)端實(shí)現(xiàn)雙寫(xiě)雙向同步的*個(gè)難點(diǎn)在于,如何保障數(shù)據(jù)的時(shí)序一致性。與單副本本地多活應(yīng)用系統(tǒng)相比,雙副本多活,也就是雙活數(shù)據(jù)中心,兩邊的應(yīng)用實(shí)例各自往各自的副本寫(xiě)入數(shù)據(jù),如果A實(shí)例像A卷某目標(biāo)地址寫(xiě)入了數(shù)據(jù),那么當(dāng)這份更新數(shù)據(jù)還沒(méi)來(lái)得及同步到B卷之前,B實(shí)例如果發(fā)起針對(duì)同一個(gè)目標(biāo)地址的讀操作,B卷不能響應(yīng)該IO,因?yàn)?/span>B卷該目標(biāo)地址的數(shù)據(jù)是舊數(shù)據(jù)。B卷如何知道A實(shí)例已經(jīng)在A卷寫(xiě)入了數(shù)據(jù)呢?這就需要復(fù)雜的加鎖機(jī)制來(lái)解決,A端的存儲(chǔ)系統(tǒng)收到A實(shí)例寫(xiě)入A卷的IO之后,不能夠ACK給A卷,它需要先向B端的存儲(chǔ)系統(tǒng)發(fā)起一個(gè)針對(duì)該目標(biāo)地址的Exclusive排他鎖,讓B端存儲(chǔ)系統(tǒng)知道有人要在A端寫(xiě)數(shù)據(jù)了,然后才能向A卷中寫(xiě)入數(shù)據(jù),如果B端的B卷針對(duì)此目標(biāo)地址正在執(zhí)行寫(xiě)入操作(由B實(shí)例發(fā)起,但是通常不會(huì)出現(xiàn)這種情況,應(yīng)用實(shí)例之間不會(huì)出現(xiàn)兩個(gè)以上實(shí)例同時(shí)寫(xiě)入某目標(biāo)地址的操作,因?yàn)槎嗷顟?yīng)用實(shí)例之間自身也會(huì)相互加鎖,但是存儲(chǔ)系統(tǒng)依然要考慮這種情況的發(fā)生),則此次加鎖不成功,A端存儲(chǔ)系統(tǒng)會(huì)掛住A實(shí)例的寫(xiě)操作,直到能夠加鎖成功為止,這里可以定期探尋也可以spin lock,不過(guò)在這么遠(yuǎn)距離上去spin lock恐怕性能會(huì)很差,所以不會(huì)使用spin lock的模式。加鎖之后,B端如果收到B實(shí)例針對(duì)該目標(biāo)地址的讀或者寫(xiě)IO,都不能夠響應(yīng),而是要掛住,此時(shí)B端存儲(chǔ)系統(tǒng)要等待A端存儲(chǔ)系統(tǒng)將剛才那筆針對(duì)A卷的寫(xiě)IO發(fā)送過(guò)來(lái)之后,才能夠返回給B實(shí)例,這樣,存儲(chǔ)系統(tǒng)任何時(shí)刻都能保證對(duì)A實(shí)例和B實(shí)例展現(xiàn)同樣的數(shù)據(jù)副本。同理,B卷被B實(shí)例寫(xiě)入時(shí),也需要執(zhí)行相同的過(guò)程,對(duì)A存儲(chǔ)的A卷對(duì)應(yīng)地址加鎖,然后后臺(tái)異步的將數(shù)據(jù)同步到A端。
第二個(gè)難點(diǎn),就是如何克服高時(shí)延鏈路導(dǎo)致的IO性能降低。通過(guò)上面的描述,大家可以看到上文中有個(gè)坑沒(méi)被填,也就是A存儲(chǔ)在何時(shí)給A實(shí)例發(fā)送寫(xiě)成功ACK?是在向B端加鎖成功后,還是在A實(shí)例寫(xiě)入的數(shù)據(jù)被*同步到的B端之后?如果是后者,那就是傳統(tǒng)的同步復(fù)制技術(shù)了,把這塊數(shù)據(jù)同步到B端,是需要一定時(shí)間的,如果使用的是TCPIP方式傳輸,根據(jù)上文中的分析,還會(huì)出現(xiàn)卡殼,等待傳輸層ACK等,時(shí)延大增,性能當(dāng)然差。但是如果A端在向B端加鎖成功后立即給A發(fā)送寫(xiě)ACK,那么時(shí)延就可以降低,此時(shí)雖然數(shù)據(jù)還沒(méi)有同步到B,但是B端已經(jīng)獲知A端有了數(shù)據(jù)這件事情,如果B實(shí)例要訪問(wèn)B端的這份數(shù)據(jù),B存儲(chǔ)會(huì)掛住這個(gè)IO,一直等到A將數(shù)據(jù)復(fù)制過(guò)來(lái)之后才會(huì)返回給B實(shí)例,所以不會(huì)導(dǎo)致數(shù)據(jù)一致性問(wèn)題。也就是說(shuō),這種方式,擁有異步IO的性能效果,以及同步IO的數(shù)據(jù)一致性效果,兩者兼得。而代價(jià),則是丟失數(shù)據(jù)的風(fēng)險(xiǎn),一旦數(shù)據(jù)還沒(méi)有同步到B端之前,鏈路或者整個(gè)A端故障,那么B端的數(shù)據(jù)就是不完整且不一致的,要性能就注定要犧牲一致性和RPO。
第三個(gè)難點(diǎn):解決死鎖問(wèn)題。如果某個(gè)應(yīng)用不按照規(guī)律來(lái),該應(yīng)用的兩個(gè)實(shí)例在兩邊分別同時(shí)發(fā)出針對(duì)同一個(gè)目標(biāo)地址的寫(xiě)IO操作給兩邊的存儲(chǔ)控制器,兩邊會(huì)同時(shí)向?qū)Ψ桨l(fā)起加鎖請(qǐng)求,這個(gè)過(guò)程中由于鏈路時(shí)延總是存在的,鎖ack總會(huì)延時(shí)收到,導(dǎo)致兩邊同時(shí)對(duì)該地址加了鎖,結(jié)果誰(shuí)都無(wú)法寫(xiě)入,這便是死鎖。解決這個(gè)問(wèn)題就得找一個(gè)單一集中地點(diǎn)來(lái)管理鎖請(qǐng)求,也就是讓其中一個(gè)存儲(chǔ)控制器來(lái)管理全部鎖請(qǐng)求,那么無(wú)疑該存儲(chǔ)控制器一定會(huì)比對(duì)端更快的搶到鎖,不過(guò)這也不是什么大問(wèn)題,本地訪問(wèn)永遠(yuǎn)先于對(duì)端訪問(wèn),這無(wú)可厚非。
綜上所述,雙活或者多活數(shù)據(jù)中心方案里,存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)難點(diǎn)在于鎖機(jī)制。與多CPU體系(也是一種多活體系結(jié)構(gòu))相比,多CPU在針對(duì)某個(gè)進(jìn)程寫(xiě)入數(shù)據(jù)到Cache時(shí),是不向其它節(jié)點(diǎn)加鎖的,而只是廣播,如果多個(gè)進(jìn)程同一時(shí)刻并發(fā)寫(xiě)入同一個(gè)目標(biāo)地址,那么就發(fā)送多個(gè)廣播,誰(shuí)先后到,覆蓋先到的,此時(shí)CPU不保證數(shù)據(jù)一致性,數(shù)據(jù)或被撕裂或被循環(huán)覆蓋,這個(gè)場(chǎng)景需要程序遵守規(guī)則,寫(xiě)前必須搶到鎖,而這個(gè)鎖就是放在某個(gè)目標(biāo)地址的一個(gè)集中式的鎖,程序?qū)懬笆褂门e例來(lái)講spin lock來(lái)不斷測(cè)試這把鎖是否有人搶到,沒(méi)搶到就寫(xiě)個(gè)1到這個(gè)地址,而spin lock本身也必須是原子操作,spin lock對(duì)應(yīng)的底層機(jī)器碼中其實(shí)包含一條lock指令,也就是讓cpu會(huì)在內(nèi)部的Ring以及QPI總線上廣播一個(gè)鎖信號(hào),鎖住所有針對(duì)這個(gè)地址的訪問(wèn),以協(xié)助該進(jìn)程搶到鎖,保證搶鎖期間不會(huì)有其他訪問(wèn)亂入。存儲(chǔ)系統(tǒng)其實(shí)也可以不加鎖,如果上層應(yīng)用真的兩邊并發(fā)同時(shí)訪問(wèn)同一個(gè)地址,證明這個(gè)應(yīng)用實(shí)現(xiàn)的有問(wèn)題,但是存儲(chǔ)系統(tǒng)為了保證數(shù)據(jù)的一致性,不得不底層加鎖,因?yàn)檎l(shuí)知道哪個(gè)應(yīng)用靠不靠譜,多線程應(yīng)用很多,程序員們已經(jīng)駕輕就熟,但是多實(shí)例應(yīng)用,非常少,出問(wèn)題的幾率也是存在的。
冬瓜哥很少提及具體產(chǎn)品,因?yàn)槎细缯J(rèn)為底層通一通百通,不需要了解具體產(chǎn)品實(shí)現(xiàn),所有實(shí)現(xiàn)都逃不出那套框架。但是為了迎合大家口味,冬瓜哥還是提一提產(chǎn)品比較好。可以肯定的是,HDS的雙活,是確保將數(shù)據(jù)*同步到對(duì)端之后(同時(shí)向?qū)Χ思渔i),才返回本端應(yīng)用寫(xiě)ACK信號(hào);而EMC Vplex所謂的“基于目錄的緩存一致性”,則是使用了加鎖完便ACK方式,這也就是其號(hào)稱“5ms時(shí)延做雙活”的底層機(jī)制。至于其他家的雙活,逃不出這兩種模式,愛(ài)是誰(shuí)是誰(shuí),愛(ài)抄誰(shuí)抄誰(shuí),冬瓜哥就不操心了。不過(guò),“基于目錄的緩存一致性”其實(shí)是出自CPU體系結(jié)構(gòu)里的學(xué)術(shù)名詞,EMC很善于包裝各種市場(chǎng)和技術(shù)概念,連學(xué)術(shù)名詞都不放過(guò)。不過(guò),雙活的這種一致性機(jī)制,與多核或者多CPU實(shí)現(xiàn)機(jī)制的確是同樣思想,在MESI協(xié)議中,某個(gè)節(jié)點(diǎn)更新了數(shù)據(jù),會(huì)轉(zhuǎn)為M態(tài)(Modify),并向其他所有節(jié)點(diǎn)發(fā)起Probe操作作廢掉其他節(jié)點(diǎn)中對(duì)應(yīng)的cache line,這一點(diǎn)和上述思想是一致的,只不過(guò)M態(tài)的數(shù)據(jù)一般不用寫(xiě)回到主存,而是呆在原地,其他節(jié)點(diǎn)入有訪問(wèn),則M態(tài)cache的owner節(jié)點(diǎn)返回?cái)?shù)據(jù),而不是將數(shù)據(jù)同步到所有其他節(jié)點(diǎn)上(早期某些基于共享總線的CPU體系結(jié)構(gòu)的確是這樣做的)。
2.2 雙活與Server-SAN能從雙活扯到ServerSAN?是的,ServerSAN本身也是多活的,其實(shí)現(xiàn)機(jī)制類(lèi)似于傳統(tǒng)存儲(chǔ)系統(tǒng)的雙活方案,只不過(guò)其有分布式的成分夾雜在里面。目前主流ServerSAN實(shí)現(xiàn)方式是將一個(gè)塊設(shè)備切片比如切成幾個(gè)MB大小的塊,然后用Hash算法來(lái)均衡放置到所有節(jié)點(diǎn)中,每個(gè)切片在其他節(jié)點(diǎn)保存一到兩份鏡像,主副本和鏡像副本保持*同步,不復(fù)制完不發(fā)送ack。由于時(shí)刻同步,所以ServerSAN可以承載多活應(yīng)用,每個(gè)節(jié)點(diǎn)上都可以跑一個(gè)應(yīng)用實(shí)例,所有實(shí)例看到時(shí)刻相同的存儲(chǔ)空間,可以并發(fā)寫(xiě)入多個(gè)鏡像副本,為了防止某些不守規(guī)矩的應(yīng)用,多節(jié)點(diǎn)間也要實(shí)現(xiàn)分布式鎖,也要解決死鎖,所以一般使用集中式鎖管理,比如zookeeper之類(lèi)。如果把ServerSAN多個(gè)節(jié)點(diǎn)拆開(kāi)放到多個(gè)數(shù)據(jù)中心,這就是多活數(shù)據(jù)中心了。所以你能看到,ServerSAN本身與雙活數(shù)據(jù)中心都是同樣的思想。
智慧城市網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ?
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
請(qǐng)輸入你感興趣的產(chǎn)品
請(qǐng)簡(jiǎn)單描述您的需求
請(qǐng)選擇省份