《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...
本節(jié)書摘來自華章出版社《大數(shù)據(jù)系統(tǒng)構(gòu)建:可擴展實時數(shù)據(jù)系統(tǒng)構(gòu)建原理與最佳實踐》一書中的第1章,第1.1節(jié),南森·馬茨(Nathan Marz) [美] 詹姆斯·沃倫(JamesWarren) 著 馬延輝 向 磊 魏東琦 譯,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“華章計算機”公眾號查看。
1.5 大數(shù)據(jù)系統(tǒng)應(yīng)有的屬性
你應(yīng)該使大數(shù)據(jù)系統(tǒng)努力具備盡可能多的關(guān)于復(fù)雜性和可擴展性的屬性。大數(shù)據(jù)系統(tǒng)不僅要運行良好、有效地使用資源,還必須易于推理。下面逐一介紹這些屬性。
1.5.1 魯棒性和容錯性
面對分布式系統(tǒng)的挑戰(zhàn),構(gòu)建“做正確的事”的系統(tǒng)并非易事。盡管會遇到機器隨機出現(xiàn)故障、分布式數(shù)據(jù)庫中一致性的復(fù)雜語義、重復(fù)的數(shù)據(jù)、并發(fā)性等問題,但系統(tǒng)仍需能夠正確運行。這些挑戰(zhàn)使得“推斷系統(tǒng)在做什么”變得很難。使大數(shù)據(jù)系統(tǒng)具備魯棒性的一部分工作是為了避免這些復(fù)雜性(挑戰(zhàn)),以便你能很容易推斷系統(tǒng)(即探索系統(tǒng))。
正如之前所討論的,系統(tǒng)必須是可以容忍人為錯誤的。這是系統(tǒng)中經(jīng)常被忽視的屬性,開發(fā)者應(yīng)予以重視。在生產(chǎn)系統(tǒng)中,偶爾有人出差錯是不可避免的,比如部署錯誤代碼損壞了數(shù)據(jù)庫中的值。如果你將不變性和重新計算性構(gòu)建到大數(shù)據(jù)的核心系統(tǒng)中,那么該系統(tǒng)通過提供一個清晰、簡單的恢復(fù)機制,就能很容易地適應(yīng)人為錯誤。這些內(nèi)容將在第2~7章中詳細(xì)描述。
1.5.2 低延遲讀取和更新
一方面,絕大多數(shù)的應(yīng)用程序需要對讀取操作有很低的延遲—這一時間通常是幾毫秒到幾百毫秒;另一方面,更新延遲的需求在不同應(yīng)用程序之間有著很大的區(qū)別。一些應(yīng)用程序需要更新操作立即傳播,但其他應(yīng)用程序延遲幾個小時也是可以的。無論如何,大數(shù)據(jù)系統(tǒng)中如果需要低延遲更新,你就必須能夠?qū)崿F(xiàn)它。更重要的是,你需要在不影響系統(tǒng)魯棒性的前提下,能夠?qū)崿F(xiàn)低延遲讀取和更新。本書將從第12章開始介紹如何在速度層實現(xiàn)低延遲更新。
1.5.3 可擴展性
面對數(shù)據(jù)或負(fù)載的增加,可擴展性能夠通過將資源添加到系統(tǒng)中來保持性能。Lambda架構(gòu)在系統(tǒng)堆棧的所有層是水平可擴展的—擴展是通過添加更多的機器來實現(xiàn)的。
1.5.4 通用性
一個通用系統(tǒng)可以支持大多數(shù)應(yīng)用程序。事實上,如果本書所述內(nèi)容沒有推及大多數(shù)的應(yīng)用程序,那么它不會是非常有用的。因為Lambda架構(gòu)是基于所有數(shù)據(jù)功能的,可以推廣到所有應(yīng)用程序,無論是財務(wù)管理系統(tǒng)、社交媒體分析、科學(xué)應(yīng)用、社交網(wǎng)絡(luò),還是其他應(yīng)用。
1.5.5 延展性
每次添加相關(guān)功能或?qū)ο到y(tǒng)的工作方式做出一些改變時,你不需要重復(fù)勞動。具備可延展性的系統(tǒng)允許以最小的開發(fā)成本添加功能。
通常,一個新特性或一個現(xiàn)有功能的改變需要將舊數(shù)據(jù)遷移成新格式。系統(tǒng)具備可延展性的要素之一就是它容易實現(xiàn)大規(guī)模遷移。能夠輕松、快捷地完成大規(guī)模遷移,是你將學(xué)習(xí)的方法的核心。
1.5.6 即席查詢
幾乎每個大型數(shù)據(jù)集中都有意料之外的值,因此,能夠?qū)?shù)據(jù)進(jìn)行即席(ad hoc)查詢是非常重要的。此外,能夠任意地挖掘數(shù)據(jù)集為業(yè)務(wù)優(yōu)化和新的應(yīng)用程序也提供了可能。最終,除非你可以問這些數(shù)據(jù)任意問題,否則你將不能利用數(shù)據(jù)發(fā)現(xiàn)有趣的事情。本書的第6章和第7章在討論批處理時,將介紹進(jìn)行即席查詢的方法。
1.5.7 最少維護(hù)
維護(hù)是開發(fā)人員的重負(fù),它是需要保持系統(tǒng)平穩(wěn)運行的工作。包括預(yù)測什么時候添加用于擴展的機器、保持進(jìn)程啟動并運行以及調(diào)試生產(chǎn)環(huán)境中的任何錯誤。
減少維護(hù)的一個重要途徑是選擇實現(xiàn)復(fù)雜性盡量低的組件,即依賴底層具有簡單機制的組件。特別是分布式數(shù)據(jù)庫,它往往有著非常復(fù)雜的內(nèi)部結(jié)構(gòu)。系統(tǒng)越復(fù)雜,出錯的可能性就越大,你越需要了解有關(guān)系統(tǒng)調(diào)試和優(yōu)化的知識。
通過依靠簡單的算法和組件,來降低實現(xiàn)復(fù)雜性,進(jìn)而實現(xiàn)最少維護(hù)。Lambda架構(gòu)采用的一個技巧是:將復(fù)雜性推出核心組件,并將其送到幾小時后輸出是可丟棄的系統(tǒng)的片段中。所使用的最復(fù)雜的組件,如讀/寫分布式數(shù)據(jù)庫,在輸出最終是可丟棄的這一層中。本書第12章在討論速度層時將詳細(xì)討論該技術(shù)。
1.5.8 可調(diào)試性
一旦出錯,大數(shù)據(jù)系統(tǒng)必須提供必要的信息來調(diào)試系統(tǒng)。關(guān)鍵是能夠追蹤系統(tǒng)中的每一個值,并能明確該值是如何產(chǎn)生的。
“可調(diào)試性”是在Lambda架構(gòu)中通過批處理層的功能特性和盡可能使用重新計算算法來實現(xiàn)的。
將所有這些屬性組合在同一個系統(tǒng)中實現(xiàn),這看起來是一個令人生畏的挑戰(zhàn)。但從基本原理出發(fā),正如Lambda架構(gòu)做的,這些屬性將從最終的系統(tǒng)設(shè)計中自然而然地生成。
在深入介紹Lambda架構(gòu)之前,我們來看更傳統(tǒng)的架構(gòu)—以依賴增量計算為特征—以及它們無法滿足這些屬性的原因。
總結(jié)
以上是生活随笔為你收集整理的《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easy_runner一个简单的压测程序
- 下一篇: 地市级地铁数据管理信息系统解决方式