在前一篇讀書筆記中,介紹了設(shè)計高可用相關(guān)的理論炼吴。接下來幾篇文章分別從存儲高可用确垫、計算高可用和業(yè)務(wù)高可用三個方面具體闡述如何在架構(gòu)中設(shè)計高可用公黑。今天這篇文章主要講的是存儲高可用。
考慮到硬件可能會發(fā)生故障的情況绕德,為了讓系統(tǒng)能正常運(yùn)轉(zhuǎn)患膛,于是在設(shè)計系統(tǒng)時,會通過將數(shù)據(jù)復(fù)制到多個存儲設(shè)備耻蛇,即通過數(shù)據(jù)冗余的方式來實現(xiàn)高可用踪蹬。這種實現(xiàn)方式帶來的復(fù)雜性問題就是,如何應(yīng)對復(fù)制延遲和中斷導(dǎo)致的數(shù)據(jù)不一致問題臣咖。所以在設(shè)計系統(tǒng) 數(shù)據(jù)如何復(fù)制跃捣、各個節(jié)點(diǎn)的職責(zé)是什么、如何應(yīng)對復(fù)制延遲和如何應(yīng)對復(fù)制中斷夺蛇。
常見的高可用存儲架構(gòu)有主備疚漆、主從、主主蚊惯、集群和分區(qū)愿卸。其中,主備截型、主從趴荸、主主這三個架構(gòu)主要針對業(yè)務(wù)量較小的系統(tǒng),即單個主機(jī)就能夠存儲所有數(shù)據(jù)宦焦。而集群发钝,則是針對海里數(shù)據(jù)。
主備復(fù)制是最常見和最簡單的一種存儲可用方案波闹。由主機(jī)和備機(jī)組成酝豪,其主要實現(xiàn)方式是,主機(jī)存儲數(shù)據(jù)精堕,通過復(fù)制通道將數(shù)據(jù)復(fù)制到備機(jī)孵淘;正常情況下,客戶端通過主機(jī)進(jìn)行讀寫操作歹篓,備機(jī)不承擔(dān)實際的業(yè)務(wù)讀寫操作瘫证;當(dāng)主機(jī)發(fā)生故障時揉阎,需要人工將備機(jī)升級為主機(jī);需要有復(fù)制延遲的監(jiān)控措施背捌,當(dāng)延遲的數(shù)據(jù)量較大時及時報警毙籽,由人工干預(yù)處理。
主從復(fù)制架構(gòu)毡庆,一般由主機(jī)和從機(jī)組成坑赡。主機(jī)負(fù)責(zé)讀寫操作,從機(jī)只負(fù)責(zé)讀操作么抗,不負(fù)責(zé)寫操作毅否;主機(jī)存儲數(shù)據(jù),通過復(fù)制通道將數(shù)據(jù)復(fù)制到備機(jī)蝇刀;當(dāng)主機(jī)發(fā)生故障時搀突,寫操作相關(guān)業(yè)務(wù)不可用,讀操作業(yè)務(wù)不影響熊泵,需要人工將從機(jī)升級為主機(jī)仰迁;需要有復(fù)制延遲的監(jiān)控措施,當(dāng)延遲的數(shù)據(jù)量較大時及時報警顽分,由人工干預(yù)處理徐许。
主從倒換或者主備倒換架構(gòu),與前兩個架構(gòu)的主要區(qū)別是卒蘸,倒換架構(gòu)支持系統(tǒng)自動決定主機(jī)角色雌隅,并完成角色切換。當(dāng)然設(shè)計時需要考慮:主備間狀態(tài)判斷(狀態(tài)傳遞的渠道和狀態(tài)檢測的內(nèi)容)缸沃、倒換決策(倒換時機(jī)恰起、倒換策略、自動程度)和數(shù)據(jù)沖突解決趾牧。
主主復(fù)制架構(gòu)是兩臺機(jī)器都是主機(jī)检盼,互相將數(shù)據(jù)復(fù)制給對方,客戶端可以任意挑選其中一臺機(jī)器進(jìn)行讀寫操作翘单。不過吨枉,主主復(fù)制架構(gòu)對數(shù)據(jù)的設(shè)計有嚴(yán)格的要求,一般適合于那些臨時性哄芜、可丟失貌亭、可覆蓋的數(shù)據(jù)場景。
集群架構(gòu)认臊,首先集群就是多臺(至少三臺)機(jī)器組合在一起形成一個統(tǒng)一的系統(tǒng)圃庭。作者將集群架構(gòu)分為數(shù)據(jù)集中集群和數(shù)據(jù)分散集群。但是我覺得數(shù)據(jù)中的數(shù)據(jù)集中集群和主從復(fù)制或者主備復(fù)制沒有本質(zhì)區(qū)別,所以暫時不寫了剧腻。
數(shù)據(jù)分散集群指多個服務(wù)器組成一個集群斟薇,每臺服務(wù)器都會負(fù)責(zé)存儲一部分?jǐn)?shù)據(jù);同時恕酸,為了提升硬件的利用率,每臺服務(wù)器又會備份一部分?jǐn)?shù)據(jù)胯陋。由于其良好的可伸縮性蕊温,所以這種架構(gòu)適合業(yè)務(wù)數(shù)據(jù)量巨大的場景。
數(shù)據(jù)分區(qū)指將數(shù)據(jù)按照一定的規(guī)則進(jìn)行分區(qū)遏乔,不同分區(qū)分布在不同的地理位置上义矛,每個分區(qū)存儲一部分?jǐn)?shù)據(jù),通過這種方式來避免地理級別的故障所造成的巨大影響盟萨。常見的分區(qū)復(fù)制規(guī)則有:集中式凉翻、互備式和獨(dú)立式。
集中式備份指存在一個總的備份中心捻激,所有的分區(qū)都將數(shù)據(jù)備份到備份中心制轰;互備式備份指每個分區(qū)備份另外一個分區(qū)的數(shù)據(jù);獨(dú)立式備份指每個分區(qū)自己有獨(dú)立的備份中心胞谭。