若是你對大數據存儲、分佈式數據庫、HBase等感興趣,歡迎加入咱們,一塊兒作最好的大數據在線存儲,職位參考及聯繫方式:https://maimai.cn/job?webjid=1heZGIyM4&srcu=1aOrffoj1&src=app&fr=my_jobsrecruit_jobweb
分佈式產生的根源是「規模」,規模可理解爲計算和存儲的需求。當單機能力沒法承載日益增加的計算存儲需求時,就要尋求對系統的擴展方法。一般有兩種擴展方式:提高單機能力(scale up),增長機器(scale out,水平擴展)。限於硬件技術,單機能力的提高在一個階段內是有上限的;而水平擴展在理論上能夠是無限的,同時,也更廉價、更容易落地。水平擴展能夠經過快速、簡單的「加機器」,有效解決業務快速增加的問題,這幾乎是現代分佈式系統必備的能力。對於爆發式增加的業務,水平擴展彷佛是惟一可選擇的方案。數據庫
對於存儲系統而言,本來存儲在一臺機器上的數據,如今要存放在多臺機器上。此時必須解決兩個問題:分片,複製。app
分片和副本是正交的,這意味着咱們能夠只使用其中一種或都使用,但一般都是同時使用的。由於分片解決的是規模和擴展性的問題,副本解決可靠、可用性的問題。對於一個生產可用的系統,兩者必須同時具有。分佈式
從使用者/客戶端的角度看,分片和副本能夠歸結爲同一個問題:請求路由,即請求應該發送給哪臺機器來處理。大數據
不管客戶端的請求是直達服務端(如HBase/cassandra),仍是經過代理(如公有云上的基於gateway的訪問方式),請求路由都是分佈式系統必須解決的問題。ui
不管是分片仍是副本,本質上都是數據分佈的體現。下面咱們來看HBase的數據分佈模型。spa