iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

淺入淺出分散式儲存系列 第 12

Day12 分散式儲存系統的必要功能

  • 分享至 

  • xImage
  •  

儲存領域有個重要的定理 - CAP定理,C(Consistency一致性)A(Availability可用性)P(Partition分割),三個最多只能滿足兩個

試想一下,假如只有一台電腦,你要的資料都在這台電腦裡,他滿足了C和A,但沒有滿足P,因為只有一台機器,數據永遠同步,永遠存取得到

但是如果你的電腦沒有數據,你的數據在遠端呢?並且數據為了做備份保護,複製了兩份共三份數據在三台電腦裡,那們他只能滿足CP或是AP,怎麼說呢?這就要看你的需求了,如果想要高一致性,也就是數據寫入一台機器,必須等其他兩台機器同步好,才能讀,那可用性就大大的降低了,如果是追求高可用性,也就是前端不用等,那可能會回傳不一致的數據,那C就會降低了,這是CAP基本定理

但也不是說兩者不能取得平衡,接下來Lab2將會使用partition的方式,也就是同一個Object拆分成多個components,使用者要get這個object時,會需要將componets組合再回傳,這不單滿足了一致性,也減低了網路上需要傳輸的data,增加了可用性

我們會先實作最簡單的分散式系統必要功能 - 心跳訊息,確保每台機器都還活著,沒有因為記憶體不夠或網路有問題disconnected

再來就是Object的metadata,metadata不但能幫我們快速定位object裡各個component的存放位置,還能存version和hash來進去去重,節省儲存空間
然後是Object的分散儲存,我會介紹如何把一個object分個成若干components,然後把各個components放在不同機器,並實驗如果一台機器掛了,data還能復原

最後是數據壓縮的部分,在前端壓縮,能有效的降低end-to-end的網路頻寬的使用量,而且在SAN網路裡,也能快速的傳遞components

附帶一提,由於機器之間都是透過Restful API進行溝通,一個完備的系統應該是有很多if條件判斷異常輸入,由於這部分的檢查過多,本Lab不會做過多的判斷,預設永遠有正確的輸入,目的只是希望讓程式碼越短越好,方便讀者理解object storage的架構


上一篇
Day11 Lab 1 - 簡單的Object storage系統
下一篇
Day13 Lab 2 - Object storage API层
系列文
淺入淺出分散式儲存30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言