溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

服務(wù)器中如何保障數(shù)據(jù)高可用

發(fā)布時(shí)間:2022-01-14 10:54:20 來(lái)源:億速云 閱讀:120 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“服務(wù)器中如何保障數(shù)據(jù)高可用”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“服務(wù)器中如何保障數(shù)據(jù)高可用”文章能幫助大家解決問(wèn)題。

分布式技術(shù),在保障高可用和容錯(cuò)或彈性時(shí),一般常用這兩種手段:

  • 復(fù)制

  • 分區(qū)

對(duì)應(yīng)英語(yǔ)一個(gè)是replication, 一個(gè)是partition。

復(fù)制,是把每次寫入的數(shù)據(jù)多保存 N 份,這樣在出故障的時(shí)候可以用來(lái)恢復(fù),同時(shí)也可以進(jìn)行讀寫分離,緩解讀的壓力。分區(qū)則是在數(shù)據(jù)超越了單臺(tái)存儲(chǔ)能力的時(shí)候,按一定規(guī)則分多臺(tái)存儲(chǔ)。分區(qū)的數(shù)據(jù)其實(shí)也是有復(fù)制的存在來(lái)保障這一個(gè)partition的數(shù)據(jù)不丟失。

復(fù)制了就可以高枕無(wú)憂了?

這都是理想情況,實(shí)際上每天都會(huì)出現(xiàn)機(jī)房故障,硬盤損壞,失誤斷電等等問(wèn)題。

比如咱們自己把手機(jī)上的照片、文件等等備份到網(wǎng)盤,手機(jī)一清理, 欣喜騰出不少空間。某天去看的時(shí)候,網(wǎng)盤里一部分?jǐn)?shù)據(jù)找不到了,客服告訴你某天機(jī)房備份文件的硬盤壞了,再也找不回來(lái),你啥感覺(jué)?

你肯定憤怒的問(wèn)客服為啥不再多存幾份??扇绻钦麄€(gè)硬盤所在機(jī)架都掛了呢?

和咱們搭應(yīng)用的服務(wù)一樣,為了應(yīng)對(duì)問(wèn)題,保證高可用,除了不出現(xiàn)單點(diǎn),還得考慮實(shí)例部署在不同的機(jī)房,這樣就算某個(gè)機(jī)房都出問(wèn)題的時(shí)候,另一個(gè)機(jī)房也還能扛著。

對(duì)應(yīng)到數(shù)據(jù)的復(fù)制和備份上,聰明的腦袋們想出了類似的思路,將備份存在不同的硬盤,不同的機(jī)架,甚至不同的機(jī)房上,像兔子一樣,做到

狡兔三窟」。  :-)

咱們一般使用網(wǎng)盤,云服務(wù)廠商提供的各類存儲(chǔ),背后都有一個(gè)分布式的存儲(chǔ)服務(wù),來(lái)保證應(yīng)用的高可用,彈性容錯(cuò)等等,像咱們之前分享的神書(shū) DDIA 里許多技術(shù)都在這些服務(wù)里有使用。

HDFS 做為Hadoop的核心存儲(chǔ)實(shí)現(xiàn),內(nèi)部也支持這種更安全的多地存儲(chǔ)備份實(shí)現(xiàn)。在 HDFS 中,這一技術(shù)稱為 Rack Awareness。

Rack 就是機(jī)架,是在機(jī)房或者數(shù)據(jù)中心里存儲(chǔ)著一堆的物理機(jī),通過(guò)網(wǎng)絡(luò)的技術(shù)來(lái)管理。

在 Hadoop 里為了在一個(gè)集群里提升網(wǎng)絡(luò)讀寫 HDFS 文件的速度,管理MetaData信息的 NameNode 會(huì)根據(jù) Rack 就近選取 DataNode去

讀寫。畢竟 NameNode存放著 rack id 和 DataNode 的對(duì)應(yīng)信息,我們的備份數(shù)據(jù)真正寫到了 DataNode里。rack id 相當(dāng)于代號(hào)。

NameNode 根據(jù) Rack id 選擇一個(gè)更近的 DataNode 的過(guò)程,稱之為 Rack Awareness。

默認(rèn)的 Hadoop 按照所有的DataNode 屬于同一個(gè) Rack。這樣就容易出問(wèn)題,而打開(kāi) Awareness之后,效果類似下面這個(gè)圖,

服務(wù)器中如何保障數(shù)據(jù)高可用

我們保存文件的時(shí)候,文件會(huì)被分成以128M為大小的 Block,之然通過(guò)NameNode來(lái)獲得具體保存數(shù)據(jù)的DataNode 地址,默認(rèn)是3 個(gè)備份,遵循的原則是「每個(gè)block,兩個(gè)備份存在同一個(gè) rack,第三個(gè)備份存在另一個(gè)不同的rack上」。這一規(guī)則也稱為 Replica Placement Policy。

具體存放時(shí)如何確定放到哪個(gè)rack上?我們前面提到是通過(guò) rack id 來(lái)判斷的, HDFS 內(nèi)部是可以通過(guò)執(zhí)行一個(gè)外部腳本或者是在配置文件中指定一個(gè) Java類來(lái)獲得。

以下是官方文檔給出的一個(gè)python 的例子

服務(wù)器中如何保障數(shù)據(jù)高可用

為什么需要 Rack Awareness?

  • 可以保證數(shù)據(jù)的高可用和可依賴性

  • 提升集群的性能

  • 在整個(gè) Rack 出現(xiàn)故障時(shí)避免數(shù)據(jù)丟失

關(guān)于“服務(wù)器中如何保障數(shù)據(jù)高可用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI