反應式設計模式( 簡體 字) | |
作者:[美]羅蘭·庫恩(Roland Kuhn)布賴恩·哈納菲(Brian Hanafee)杰米·艾倫(Jamie Allen)著 | 類別:1. -> 程式設計 -> 綜合 |
譯者:何 品 邱嘉和 王石沖 譯 林煒翔審校 | |
出版社:清華大學出版社 | 3dWoo書號: 50489 詢問書籍請說出此書號! 有庫存 NT售價: 490 元 |
出版日:1/1/2019 | |
頁數:362 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302517146 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第Ⅰ部分簡介
第1章為什么需要反應式?3 1.1剖析反應式應用5 1.2應對負載6 1.3應對失敗7 1.4讓系統即時響應9 1.5避免大泥球10 1.6整合非反應式組件11 1.7小結12 第2章《反應式宣言》概覽13 2.1對用戶作出反應13 2.1.1理解傳統方法14 2.1.2使用共享資源的延遲分析16 2.1.3使用隊列限制最大延遲17 2.2利用并行性18 2.2.1通過并行化降低延遲19 2.2.2使用可組合的Future改善并行性21 2.2.3為序列式執行表象買單22 2.3并行執行的限制24 2.3.1阿姆達爾定律24 2.3.2通用伸縮性法則25 2.4對失敗作出反應26 2.4.1劃分與隔離28 2.4.2使用斷路器29 2.4.3監督30 2.5放棄強一致性32 2.5.1ACID2.033 2.5.2接受更新34 2.6對反應式設計模式的需求35 2.6.1管理復雜性36 2.6.2使編程模型更貼近真實世界37 2.7小結38 第3章行業工具39 3.1反應式的早期解決方案39 3.2函數式編程41 3.2.1不可變性42 3.2.2引用透明性44 3.2.3副作用45 3.2.4函數作為一等公民46 3.3即時響應用戶47 3.4對反應式設計的現有支持49 3.4.1綠色線程49 3.4.2事件循環50 3.4.3通信順序進程51 3.4.4Future和Promise53 3.4.5反應式擴展工具包58 3.4.6Actor模型59 3.5小結64 第Ⅱ部分微言大義 第4章消息傳遞67 4.1消息67 4.2垂直伸縮68 4.3“基于事件”與“基于消息”69 4.4“同步”與“異步”71 4.5流量控制73 4.6送達保證75 4.7作為消息的事件77 4.8同步消息傳遞79 4.9小結79 第5章位置透明性81 5.1什么是位置透明性?81 5.2透明化遠程處理的謬誤82 5.3基于顯式消息傳遞的糾正方案83 5.4優化本地消息傳遞84 5.5消息丟失85 5.6水平擴展性87 5.7位置透明性使測試更加簡單88 5.8動態組合88 5.9小結90 第6章分而治之91 6.1分層拆解問題92 6.2“依賴”與“子模塊”94 6.3構建你自己的大公司96 6.4規范和測試的優點97 6.5水平擴展性和垂直伸縮性98 6.6小結99 第7章原則性失敗處理101 7.1所有權意味著承諾101 7.2所有權隱含生命周期控制103 7.3所有級別上的回彈性104 7.4小結105 第8章有界一致性107 8.1封裝模塊糾正方案108 8.2根據事務邊界對數據和行為進行分組109 8.3跨事務邊界建模工作流109 8.4失敗單元即一致性單元110 8.5分離職責111 8.6堅持一致性的隔離范圍113 8.7小結114 第9章按需使用非確定性115 9.1邏輯編程和聲明式數據流115 9.2函數式反應式編程117 9.3不共享簡化并發118 9.4共享狀態的并發119 9.5如何窘境突圍?119 9.6小結121 第10章消息流123 10.1推動數據向前流動123 10.2模型化領域流程125 10.3認清回彈性的局限性125 10.4估計速率和部署規模126 10.5為流量控制進行規劃127 10.6小結127 第Ⅲ部分設計模式 第11章測試反應式應用程序131 11.1如何測試131 11.1.1單元測試132 11.1.2組件測試133 11.1.3聯動測試133 11.1.4集成測試133 11.1.5用戶驗收測試134 11.1.6黑盒測試與白盒測試134 11.2測試環境135 11.3異步測試136 11.3.1提供阻塞的消息接收者137 11.3.2選擇超時時間的難題139 11.3.3斷言消息的缺失145 11.3.4提供同步執行引擎146 11.3.5異步斷言148 11.3.6完全異步的測試149 11.3.7斷言沒有發生異步錯誤151 11.4測試非確定性系統154 11.4.1執行計劃的麻煩155 11.4.2測試分布式組件155 11.4.3模擬Actor156 11.4.4分布式組件157 11.5測試彈性157 11.6測試回彈性158 11.6.1應用程序回彈性158 11.6.2基礎設施的回彈性162 11.7測試即時響應性164 11.8小結165 第12章容錯及恢復模式167 12.1簡單組件模式167 12.1.1問題設定168 12.1.2模式應用168 12.1.3模式回顧170 12.1.4適用性171 12.2錯誤內核模式171 12.2.1問題設定172 12.2.2模式應用172 12.2.3模式回顧175 12.2.4適用性176 12.3放任崩潰模式176 12.3.1問題設定177 12.3.2模式應用177 12.3.3模式回顧178 12.3.4實現上的考慮179 12.3.5推論:心跳模式180 12.3.6推論:主動失敗信號模式180 12.4斷路器模式181 12.4.1問題設定182 12.4.2模式應用182 12.4.3模式回顧186 12.4.4適用性187 12.5小結187 第13章復制模式189 13.1主動-被動復制模式190 13.1.1問題設定190 13.1.2模式應用191 13.1.3模式回顧203 13.1.4適用性204 13.2多主復制模式204 13.2.1基于共識的復制205 13.2.2具有沖突檢測與處理方案的復制方式208 13.2.3無沖突的可復制數據類型210 13.3主動-主動復制模式217 13.3.1問題設定218 13.3.2模式應用218 13.3.3模式回顧225 13.3.4與虛擬同步模型的關系226 13.4小結227 第14章資源管理模式229 14.1資源封裝模式229 14.1.1問題設定230 14.1.2模式應用230 14.1.3模式回顧236 14.1.4適用性237 14.2資源借貸模式237 14.2.1問題設定238 14.2.2模式應用238 14.2.3模式回顧240 14.2.4適用性241 14.2.5實現上的考慮242 14.2.6變體:使用資源借貸模式進行局部公開242 14.3復雜命令模式243 14.3.1問題設定243 14.3.2模式應用244 14.3.3模式回顧251 14.3.4適用性252 14.4資源池模式252 14.4.1問題設定253 14.4.2模式應用253 14.4.3模式回顧255 14.4.4實現上的考慮256 14.5托管阻塞模式257 14.5.1問題設定257 14.5.2模式應用258 14.5.3模式回顧260 14.5.4適用性261 14.6小結262 第15章消息流模式263 15.1請求-響應模式264 15.1.1問題設定264 15.1.2模式應用265 15.1.3該模式的常見實例267 15.1.4模式回顧272 15.1.5適用性272 15.2消息自包含模式273 15.2.1問題設定273 15.2.2模式應用274 15.2.3模式回顧276 15.2.4適用性277 15.3詢問模式277 15.3.1問題設定278 15.3.2模式應用278 15.3.3模式回顧281 15.3.4適用性283 15.4轉發流模式283 15.4.1問題設定283 15.4.2模式應用284 15.4.3模式回顧284 15.4.4適用性285 15.5聚合器模式285 15.5.1問題設定285 15.5.2模式應用286 15.5.3模式回顧289 15.5.4適用性290 15.6事務序列模式290 15.6.1問題設定291 15.6.2模式應用291 15.6.3模式回顧293 15.6.4適用性294 15.7業務握手協議(或可靠投遞模式)294 15.7.1問題設定295 15.7.2模式應用295 15.7.3模式回顧300 15.7.4適用性301 15.8小結301 第16章流量控制模式303 16.1拉取模式303 16.1.1問題設定304 16.1.2模式應用304 16.1.3模式回顧306 16.1.4適用性307 16.2托管隊列模式307 16.2.1問題設定308 16.2.2模式應用308 16.2.3模式回顧310 16.2.4適用性310 16.3丟棄模式311 16.3.1問題設定311 16.3.2模式應用311 16.3.3模式回顧313 16.3.4適用性316 16.4限流模式316 16.4.1問題設定316 16.4.2模式應用317 16.4.3模式回顧320 16.5小結320 第17章狀態管理和持久化模式321 17.1領域對象模式321 17.1.1問題設定322 17.1.2模式應用322 17.1.3模式回顧326 17.2分片模式326 17.2.1問題設定326 17.2.2模式應用327 17.2.3模式回顧329 17.2.4重要警告329 17.3事件溯源模式330 17.3.1問題設定330 17.3.2模式應用330 17.3.3模式回顧333 17.3.4適用性333 17.4事件流模式334 17.4.1問題設定334 17.4.2模式應用334 17.4.3模式回顧336 17.4.4適用性337 17.5小結337 附錄A反應式系統圖示339 附錄B一個虛構的案例341 附錄C《反應式宣言》正文355 《反應式設計模式》介紹反應式應用程序設計的原則、模式和經典實踐,講述如何用斷路器模式將運行緩慢的組件與其他組件隔開、如何用事務序列(Saga)模式實現多階段事務以及如何通過分片模式來劃分數據集,分析如何保持源代碼的可讀性以及系統的可測試性(即使在存在許多潛在交互和失敗點的情況下)。
主要內容 ? “反應式宣言”權威指南 ? 流量控制、有界一致性、容錯等模式 ? 得之不易的關于“什么行不通”的經驗 ? 在巨大的負載下保持伸縮性的架構 《反應式設計模式》旨在成為引導你理解和設計反應式系統的綜合性指南,不僅提供《反應式宣言》的注解版本,還包括開創該宣言的緣由和論據。《反應式設計模式》濃墨重彩地描述一些反應式設計模式,這些模式實現反應式系統設計的多個方面;還列出了更深層次的文獻資源,以便你進一步研究。所陳述的模式形成一個連貫整體,雖然并非詳盡無遺,但其所包含的背景知識將使得讀者能在需要的時候識別、提煉和呈現出新模式。
讀者對象 《反應式設計模式》面向每一位想要實現反應式系統的人士。 ? 《反應式設計模式》涵蓋反應式系統的架構設計以及設計理念,向架構師簡要介紹反應式應用程序及其組件的特性,并討論了這些模式的適用性。 ? 踐行者將受益于書中對于每個模式所適用場景的詳盡討論。《反應式設計模式》列出各模式的應用步驟,并配備完整的源代碼;講述了在不同場景下,如何靈活運用和適配這些模式。 ? 希望學到更多知識的讀者在觀看了Principles of Reactive Programming視頻課程后,將樂意了解反應式原則背后的思考過程,并可遵循參考文獻做進一步的研究。 閱讀《反應式設計模式》前,讀者不必預先了解反應式系統,但仍然需要熟悉通常的軟件開發,并具有一些排除分布式系統引發的困難的經驗。對于某些部分,基本理解函數式編程將有所裨益(例如了解如何使用不可變值和純函數進行編程),但不必了解范疇論。 導讀 《反應式設計模式》的內容是特意組織編排的,以便讀者可像讀一本故事書那樣翻閱。首先呈現一個介紹性示例,概述《反應式宣言》以及反應式工具集,進而探討反應式原則背后的哲學,最后從不同角度闡述設計反應式系統所需的設計模式。這段旅程涵蓋大量知識領域,并在文字描述中引用了不少額外的背景資料。通讀一遍,瀏覽相關內容,你將建立對書中知識范圍的直覺。但這通常只是進一步研究的起點;在自己的項目中應用從《反應式設計模式》學到的知識時,可回頭再次研讀,那時會獲得更深刻的洞察力。 如果你已經熟悉反應式系統面臨的挑戰,可跳過第1章;如果你已經熟悉大多數行業主流工具,則可跳過第3章。時間緊迫的讀者可直接開始閱讀第III部分講述的各個模式,但依然建議首先學習第II部分:模式的描述過程常引用相關解釋及理論背景,這些內容都是對應設計模式的衍生基礎。 具有更多設計和實現反應式系統的經驗后,預計你將再次研讀那些更富哲理性的章節——尤其是第8章和第9章;首次閱讀時,會覺得這兩章的內容難以理解,請不必擔心,反復研讀即可。 約定 由于在作為編程概念時,對英文單詞future的多重解讀已嚴重偏離其本身的含義,因此,所有將其作為編程概念引用的地方都使用首字母大寫的Future,就算沒有出現在代碼字體中也是如此。 英文單詞Actor的情況略有不同,在日常英語中Actor指舞臺上的一個人,以及一個動作或處理過程的參與者。因此,這個單詞只有在特別指 Actor 模型,或在代碼字體中作為 Actor 特質出現時,才會大寫。 源代碼下載 《反應式設計模式》的示例源代碼(作者提供的源代碼)可從GitHub下載。 《反應式設計模式》譯者對源代碼進行了重新調試,新代碼下載位置。 《反應式設計模式》正文列出的代碼都是經過譯者重新調試過的代碼。 讀者也可掃描封底的二維碼,下載這兩套代碼。 中文版還提供在線資源。 GitHub還提供其他功能,允許你討論《反應式設計模式》中的示例或報告問題,并歡迎你提出改進意見,這樣,其他讀者將受益于你的思考和經驗。 書中大部分示例代碼都用 Java 或 Scala 編寫,并將SBT用作構建工具。要查閱SBT詳細文檔;要查閱SBT入門資料。為構建和運行示例代碼,還需要使用JDK 8。 其他在線資源 可訪問獲取《反應式設計模式》所介紹模式的概述和附加材料。此外,讀者可免費訪問Manning出版社的私有Web論壇,在那里,可評論《反應式設計模式》、提出技術問題,還可獲得作者和其他用戶的幫助。可用Web瀏覽器訪問。可從這個頁面了解以下信息:注冊后如何訪問該論壇、可獲得哪些幫助以及該論壇的一些行為準則。 Manning承諾為讀者提供一個交流場所,在那里,你可與作者以及其他讀者進行有意義的對話。但作者不對參與程度做任何承諾,作者對AO的貢獻仍是自愿的和無償的。我們建議你向作者提一些富有挑戰性的問題,以引起他們的興趣! 只要《反應式設計模式》英文版尚未絕版,就可從Manning出版社的網站上訪問到作者在線論壇以及之前討論的存檔。 |