2.分布式架構應用現狀
當前主流的分布式應用有兩種:分布式數據庫和Hadoop分布式系統。兩種解決方案對比如表1所示。
表1. 分布式數據庫和Hadoop分布式系統的對比
MPP分布式數據庫較Hadoop分布式系統,在復雜邏輯的結構化數據處理上具有一定的優(yōu)勢,且可基于SQL開(kāi)發(fā),對于有較豐富SQL經(jīng)驗的系統開(kāi)發(fā)者,開(kāi)發(fā)與運維更容易。當然,業(yè)界MPP分布式數據庫產(chǎn)品價(jià)格也要高于Hadoop這個(gè)源于開(kāi)源社區的產(chǎn)品。
這是否意味著(zhù)MPP分布式數據庫就是大數據處理的最佳解決方案呢?我們以銀行系統數據的價(jià)值密度和數據特征為例來(lái)考慮這個(gè)問(wèn)題。對于銀行系統數據,我們基本可以達成這樣一個(gè)共識:銀行系統數據中,結構化數據價(jià)值密度通常高于非結構化或半結構化數據,而在銀行數據中非結構化數據占用了大量的存儲資源。這是因為銀行系統中結構化數據以賬務(wù)數據為主,而非結構化數據則主要集中在憑證影像等數據。當然結構化數據中也包括部分日志信息等價(jià)值密度不高的數據。
數據存儲與處理技術(shù)在由"一種架構支持所有應用"向"多種架構支持多類(lèi)應用"轉變。同樣對于數據消費層數據處理技術(shù),也應根據數據價(jià)值密度及數據特征等因素采用與之相匹配的架構來(lái)支持。對于數據消費層數據中那些價(jià)值密度高的交易及賬務(wù)數據可采用MPP分布式數據庫構建數據處理平臺,而對于那些價(jià)值密度不高的結構化數據和非(半)結構化數據則可以采用Hadoop分布式系統作為處理平臺。
3.分布式局限性:CAP理論
如圖2所示,CAP原理中有三個(gè)要素:一致性(Consistency),可用性(Availability)和分區容忍性(Partition tolerance)
圖2.CAP原理示意圖
CAP原理指的是在分布式系統中這三個(gè)要素最多只能同時(shí)實(shí)現兩點(diǎn),不可能三者兼顧。因此在進(jìn)行分布式架構設計時(shí),必須做出取舍。而對于分布式數據系統,分區容忍性是基本要求,否則就失去了價(jià)值。因此設計分布式數據系統,就是在一致性和可用性之間取一個(gè)平衡。對于大多數Web應用,其實(shí)并不需要強一致性, 因此犧牲一致性而換取高可用性,是目前多數分布式數據庫產(chǎn)品的方向。
從客戶(hù)端角度,多進(jìn)程并發(fā)訪(fǎng)問(wèn)時(shí),更新過(guò)的數據在不同進(jìn)程如何獲取的不同策略,決定了不同的一致性。對于關(guān)系型數據庫,要求更新過(guò)的數據能被后續的訪(fǎng)問(wèn)都能看到,這是強一致性。如果能容忍后續的部分或者全部訪(fǎng)問(wèn)不到,則是弱一致性。如果經(jīng)過(guò)一段時(shí)間后要求能訪(fǎng)問(wèn)到更新后的數據,則是最終一致性。
但Web應用也有例外,比如支付寶系統,就要求數據(銀行賬戶(hù))的強一致性,而且面對大量淘寶用戶(hù),可用性要求很高,因此只能犧牲數據的分區冗余。
對于MPP DB而言,雖說(shuō)是宣稱(chēng)Scale out(橫向擴展),但是這種out一般到100,而Hadoop一般可以到1000+。在我們的測試中,也發(fā)現線(xiàn)性擴展性一項即使是在較小的節點(diǎn)數方面,也并未達到絕對的直線(xiàn)的性能。
這是為什么呢?我們大致可以從CAP理論上來(lái)找到一些理由。因為MPP DB始終還是DB,一定要考慮C(Consistency),其次考慮A(Availability),最后才在可能的情況下盡量做好P(Partition-tolerance)。而Hadoop就是為了并行處理和存儲設計的,所以?xún)?yōu)先考慮的是P,然后是A,最后再考慮C。所以后者的可擴展性當然好于前者。