如圖1-1所示,云主機租用,傳統單體數據架構(Monolithic Architecture)最大的特點便是集中式數據存儲,企業內部可能有諸多的系統,例如Web業務系統、訂單系統、CRM系統、ERP系統、監控系統等,這些系統的事務性數據主要基于集中式的關系性數據庫(DBMS)實現存儲,大多數將架構分為計算層和存儲層。
存儲層負責企業內系統的數據訪問,且具有最終數據一致性保障。這些數據反映了當前的業務狀態,例如系統的訂單交易量、網站的活躍用戶數、每個用戶的交易額變化等,所有的更新操作均需要借助于同一套數據庫實現。
▲圖1-1 傳統數據結構
單體架構的初期效率很高,但是隨著時間的推移,業務越來越多,系統逐漸變得很大,越來越難以維護和升級,數據庫是唯一的準確數據源,每個應用都需要訪問數據庫來獲取對應的數據,如果數據庫發生改變或者出現問題,則將對整個業務系統產生影響。
后來隨著微服務架構(Microservices Architecture)的出現,企業開始逐漸采用微服務作為企業業務系統的架構體系。微服務架構的核心思想是,一個應用是由多個小的、相互獨立的微服務組成,這些服務運行在自己的進程中,開發和發布都沒有依賴。不同的服務能依據不同的業務需求,構建的不同的技術架構之上,能夠聚焦在有限的業務功能。
▲圖1-2 微服務架構
如圖1-2所示,微服務架構將系統拆解成不同的獨立服務模塊,每個模塊分別使用各自獨立的數據庫,這種模式解決了業務系統拓展的問題,但是也帶來了新的問題,那就是業務交易數據過于分散在不同的系統中,很難將數據進行集中化管理。
對于企業內部進行數據分析或者數據挖掘之類的應用,則需要通過從不同的數據庫中進行數據抽取,將數據從數據庫中周期性地同步到數據倉庫中,然后在數據倉庫中進行數據的抽取、轉換、加載(ETL),從而構建成不同的數據集市和應用,提供給業務系統使用。
起初數據倉庫主要還是構建在關系型數據庫之上,例如Oracle、Mysql等數據庫,但是隨著企業數據量的增長,關系型數據庫已經無法支撐大規模數據集的存儲和分析,因此越來越多的企業開始選擇基于Hadoop構建企業級大數據平臺。
同時眾多Sql-On-Hadoop技術方案的提出,也讓企業在Hadoop上構建不同類型的數據應用變得簡單而高效,香港免備案主機,例如通過使用Apache Hive進行數據ETL處理,通過使用Apache Impala進行實時交互性查詢等。
大數據技術的興起,讓企業能夠更加靈活高效地使用自己的業務數據,從數據中提取出更多重要的價值,并將數據分析和挖掘出來的結果應用在企業的決策、營銷、管理等應用領域。但不可避免的是,隨著越來越多新技術的引入與使用,企業內部一套大數據管理平臺可能會借助眾多開源技術組件實現。
例如在構建企業數據倉庫的過程中,數據往往都是周期性的從業務系統中同步到大數據平臺,完成一系列ETL轉換動作之后,最終形成數據集市等應用。但是對于一些時間要求比較高的應用,例如實時報表統計,則必須有非常低的延時展示統計結果,為此業界提出一套Lambda架構方案來處理不同類型的數據。
例圖1-3所示,大數據平臺中包含批量計算的Batch Layer和實時計算的Speed Layer,通過在一套平臺中將批計算和流計算整合在一起,例如使用Hadoop MapReduce進行批量數據的處理,使用Apache Storm進行實時數據的處理。
這種架構在一定程度上解決了不同計算類型的問題,但是帶來的問題是框架太多會導致平臺復雜度過高、運維成本高等。在一套資源管理平臺中管理不同類型的計算框架使用也是非常困難的事情。總而言之,Lambda架構是構建大數據應用程序的一種很有效的解決方案,但是還不是最完美的方案。