Designing Data-Intensive Applications

來源:互聯網
上載者:User

標籤:細節   git   範圍   eal   time   線上資源   定製   dia   處理   

下面是這本書序言中的大部分內容,本人的英文水平有限,有理解不到位的地方還請大家指教,這算是自己對這本書的筆記和總結。

資料是當今系統設計中許多挑戰的中心,一些難以解決的問題如系統的可擴充性,一致性,可靠性,有效性和可維護性等需要弄清楚。 另外,我們已經有了各式各樣的工具,包括關係型資料庫,NoSQL資料庫,流處理或批處理以及訊息佇列,哪一個是你應用程式的最佳選擇? 你又如何理解這些流行術語?

在這本實用又全面的指南中,作者Martin Kleppmann通過分析資料處理和儲存的各種技術的優缺點,協助你瞭解這個多樣化的領域。在軟體開發中,世界是變化的,但其基本原則保持不變。軟體工程師和架構師更應該學習如何在實踐中應用這些想法,以及在現代應用中如何充分利用大資料。

概括起來,本書有以下五個方面的特色:

  • 探究你目前正在使用的系統幕後的技術細節,學習如何更有效地使用和操作它們
  • 通過鑒別不同工具的優缺點做出最明智的決策
  • 在一致性,可擴充性,容錯性和複雜性之間進行權衡
  • 明白分布式系統技術的研究和實踐取決於你所使用的資料庫
  • 探究大部分線上服務背後的技術細節,學習他們的架構

作者在開篇就告訴了讀者寫此書的目的:

技術是推動社會發展的強大力量。 資料,軟體和資訊可以用來做壞事:鞏固不公平的權力結構,破壞人權,保護既得利益。 但是,它們也可以用來做好事:讓外界聽到底層民眾的聲音,為每個人創造機會,避免災難。 這本書正是致力於指引人們人朝著正確的方向前進。

如果你近年來從事軟體工程領域的技術開發工作,尤其從事於服務端/後端的開發工作,你的耳朵可能會被大量的有關資料處理和儲存的熱門術語所充斥:NoSQL! 大資料! 全網域(Web-scale)!分區(Sharding)! 最終一致性(Eventual consistency)! ACID(原子性、一致性、隔離性、持久性)! CAP(一致性、可用性、分區容錯性) 理論! 雲端運算服務(Cloud services)! MapReduce!Real-time!

在過去的十年中我們看到了很多關於資料庫,分布式系統以及在其上構建的應用程式的有趣的發展趨勢。這些發展有不同的推動力:

  • 諸如Google,雅虎,亞馬遜,Facebook,LinkedIn,微軟和Twitter等互連網公司正在處理大量的資料和流量,這樣的需求迫使他們創造新的工具使他們能夠高效地處理這種大規模的資料
  • 企業的敏捷性,低成本開發,通過縮短開發週期和構建靈活的資料模型能夠對不斷變化的市場需求做出快速反應
  • 在許多業務中成功的免費開源軟體已成為商業或定製的內部軟體的首選
  • CPU時鐘頻率的增長在近年已趨於飽和,但是多核CPU已經成為伺服器標配,網路也越來越來快,意味著並行計算能力得到大幅度提升
  • 即使你在一個小規模團隊工作,你依然可以藉助AWS(Amazon Web Services)這樣的基礎設施服務(Iaas)在多台電腦甚至多個地理地區上構建分布式系統
  • 現在很多服務都預想是高可靠的,因停電或維修造成的長時間停機越來越不可接受

資料密集型應用正在利用這些技術拓展著無限可能.現在很多應用都是資料密集型的,而不是計算密集型的。因為對這些應用來說,CPU的計算能力不再是瓶頸,更大的挑戰來自於資料的數量、複雜度和更新的速度。

協助資料密集型應用儲存和處理資料的工具和技術已經迅速適應這些變化。在新的資料庫系統(“NoSQL”)引起業界廣泛關注的同時,訊息佇列,緩衝,搜尋索引,批處理和流處理架構以及相關技術也同等重要,很多應用綜合使用很多種技術。

隨處可見的流行語意味著我們熱衷於嘗試新鮮事物,這是一件好事。 但是,作為軟體工程師和架構師,如果我們想要構建出色的應用程式,我們就需要對這些新鮮技術有更加深入精確的理解以及能權衡這些技術的優劣, 為此,我們必須深入挖掘這些新鮮技術背後的細節。

幸運的是,萬變不離其宗,在技術快速發展的背後,無論您使用哪個版本的特定工具,都有持久的原則。 如果你瞭解這些原則,您就能知道每個工具適用的地方,以及如何充分利用它還有如何避免錯誤。這是本書的目的。

本書的目標是協助您瞭解資料處理和儲存的日新月異的多樣化技術。這不是某個特定工具的專屬教程,也不是一本充滿乾枯理??論的教科書。相反,我們將會介紹許多資料系統的成功案例:那些運行在生產環境中的支撐起很多流行應用的且每天能夠滿足伸縮性,效能和可靠性需求的技術。

我們將深入到這些系統的內部,梳理他們的關鍵演算法,討論他們的原則以及他們面臨不同目標時作出的權衡取捨。在這個過程中,我們將嘗試尋找探索資料系統的有效方法 - 不僅僅局限於知道它們是如何工作的,還有它們為什麼用這種方式工作,以及我們需要問些什麼問題。

閱讀本書後,您將能夠恰當地按需選擇合適的技術,並瞭解如何綜合使用多種技術去構建一個健壯的應用程式體系架構。幸運的是很少需要你從頭開始構建自己的資料庫儲存引擎,其實也沒有這個必要。然而,你必須能直觀的明白你的系統內部正在做什麼,這樣你就可以推斷他們的行為,做出合理有效設計決策,並且能追蹤到可能出現的問題。

誰該閱讀這本書?

如果你開發的應用有著儲存或處理資料的服務端/後端,並且你的應用使用互連網(例如,Web應用程式,手機app或串連到互連網的感應器),那麼這本書適合你。

本書適用於喜歡編程的軟體工程師,軟體架構師和技術經理。如果您需要對你所開發的系統架構做出決策,例如,如果你需要選擇哪些能工具解決給定問題並弄清楚如何最好地應用他們,這也是相當適用的。但即使沒有這樣的需求,這本書也能協助你更好地瞭解他們的優劣。

您應該具有一些開發過Web應用或網路服務的相關經驗,並且您應該熟悉關係型資料庫和SQL。最好熟悉一些非關係型資料庫和其他與資料相關的工具,但不是必須。大致瞭解常見的網路通訊協定如TCP和HTTP對於本書也是有協助的。本書與你使用的程式設計語言或平台無關。

如果你符合下面列出的任何一種情況,這就是一本很有價值的書:

  • 您想瞭解如何使資料系統可擴充,例如,為數百萬使用者支援Web或行動裝置 App。
  • 您需要提高應用的可用性(最大限度地減少停機時間)和運行穩定性。
  • 您正在尋找使系統長期易於維護的方法,即使隨著系統不斷髮展即使需求和技術的不斷變化。
  • 您對事物的運行機制有著天然的好奇心,並且希望知道大部分網站和線上服務背後的原理。本書分析了各種資料庫和資料處理系統的內部結構,探索這些系統設計中的亮點是非常有趣的事情。

有時,我們在討論可擴充的資料系統時,有些人會作出“你不是Google或亞馬遜”這樣的評論。"停止擔心規模,只使用關係型資料庫“這個陳述中有這樣的道理:為不需要的規模構建系統是浪費精力,這也有可能會把你鎖在僵化的設計中。 實際上,這是一種過早最佳化的形式「過早最佳化是萬惡之源」。但是選擇合適的工具也很重要,每個技術都有各自不同的優點和缺點。 我們將會看到關係型資料庫固然很重要但他不是對資料處理技術的蓋棺定論。

本書範圍

本書沒有打算給出關於如何安裝或如何使用專用軟體包或API的詳細說明,因為這些內容已經有很多文檔了。 相反,我們會討論對資料系統至關重要的各種原則和權衡,我們也會探索不同的產品所做出的不同的設計決策。

在本書的電子版中,我們包含了線上資源的全文連結。所有連結都在出版時都進行了驗證,但不幸的是,由於網路自身的性質,有些連結存在頻繁中斷的現象,如果您遇到這種情況或者您閱讀的是本書的印刷本,你可以藉助搜尋引擎尋找這些參考資料。對於學術論文,您可以在Google學術搜尋中搜尋相關標題以尋找開放取閱(open-access)式的PDF檔案。 或者,您可以在https://github.com/ept/ddia-references找到所有的參考資料,我們會在這裡維護最新的連結。

我們主要關注資料系統的架構以及它們被整合到資料密集型應用中的方式。由於篇幅的原因這本書不涉及部署,操作,安全,管理等領域 - 這些都是複雜而重要的話題以致於在本書中用一些片面的粗略的註解都不足以給與他們正確的評價,他們中的任一個亦能單獨出一本書。

本書中描述的許多技術屬於大資料領域。 然而,“大資料”這個術語被過度使用且定義很模糊。 本書使用更為明確的術語,如單節點VS分布式系統,線上/互動式VS離線/批處理系統。

本書偏向於自由和開源軟體(FOSS),因為閱讀,修改和執行原始碼是一種理解事情是如何工作的有效方式。使用開放平台還可以降低供應商鎖定的風險。 然而,在適當的情況下,我們也討論所有權軟體(閉源軟體,軟體即服務,或僅在文獻中描述但不公開發布的公司內部軟體)。

參考文獻及延伸閱讀

我們在本書中討論的大部分內容已經在其他地方以某種形式被提及了----會議報告,研究論文,部落格文章,代碼,bug追蹤器,郵件清單。 這本書總結了來自許多不同來源的最重要的想法,其中包括了這本書所有的原始文獻的出處。如果你想更深入地探索每一個知識細節,那麼每章末尾的參考資料都是很好的資源,他們中的大多數可以線上免費擷取。

Designing Data-Intensive Applications

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.