1、個人建議
這本書可以作為了解反應式(響應式)程式設計的入門書籍。我相信反應式程式設計是未來的趨勢,也必將成為一個主要的程式設計方向,當然它與面向物件程式設計、函數語言程式設計等程式設計形式是互為補充的。目前 Spring 5 推出 WebFlux 以支援反應式程式設計,Java 9中引入了新的響應式流 API 來支援 Java 9 中的響應式程式設計,等等。有空也可以瞭解一下:
https://projectreactor.io,
《反應式設計模式》介紹反應式應用程式設計的原則、模式和經典實踐,講述如何用斷路器模式將執行緩慢的元件與其他元件隔開、如何用事務序列(Saga)模式實現多階段事務以及如何透過分片模式來劃分資料集,分析如何保持原始碼的可讀性以及系統的可測試性(即使在存在許多潛在互動和失敗點的情況下)。
以下內容來自雲棲社群(https://yq.aliyun.com/articles/497920)
反應式系統的特質:
1、個人建議
這本書可以作為了解反應式(響應式)程式設計的入門書籍。我相信反應式程式設計是未來的趨勢,也必將成為一個主要的程式設計方向,當然它與面向物件程式設計、函數語言程式設計等程式設計形式是互為補充的。目前 Spring 5 推出 WebFlux 以支援反應式程式設計,Java 9中引入了新的響應式流 API 來支援 Java 9 中的響應式程式設計,等等。有空也可以瞭解一下:
https://projectreactor.io,
本人也在翻譯他們家的文件,可以相互交流。2、本書簡介《反應式設計模式》介紹反應式應用程式設計的原則、模式和經典實踐,講述如何用斷路器模式將執行緩慢的元件與其他元件隔開、如何用事務序列(Saga)模式實現多階段事務以及如何透過分片模式來劃分資料集,分析如何保持原始碼的可讀性以及系統的可測試性(即使在存在許多潛在互動和失敗點的情況下)。
3、反應式宣言以下內容來自雲棲社群(https://yq.aliyun.com/articles/497920)
反應式系統的特質:
即時響應性(Responsive): 只要有可能, 系統(參見 C.2.16)就會及時地做出響應。 即時響應是可用性和實用性的基石, 但是更加重要的是,即時響應意味著可以快速地檢測到問題並且行之有效地解決它。 即時響應的系統專注於提供快速而一致的響應時間, 確立可靠的上界, 從而提供一致的服務質量。 反過來,這種一致的行為簡化了錯誤處理、 建立了終端使用者的信任、 並鼓勵他們進行進一步的互動。回彈性/韌性(Resilient): 系統在出現失敗(參見 C.2.7)時依然保持即時響應性。 這不僅適用於高可用的、 任務關鍵型系統——任何不具備回彈性/韌性的系統都將會在發生失敗之後丟失即時響應性。 回彈性/韌性是透過複製(參見 C.2.13)、 遏制、 隔離(參見 C.2.8)以及委派(參見 C.2.5)來實現的。 失敗被包含在了每個元件(參見 C.2.4)內部, 與其它元件相互隔離, 從而確保了系統的各個部分能夠在不危及整個系統的情況下失敗和恢復。 每個元件的恢復都被委派給了另一個(外部的)元件, 此外,在必要時可以透過資料副本來保障高可用性。 (因此)元件的客戶端(也就)沒有了處理元件失敗的負擔。適應性/彈性(Elastic): 系統在不斷變化的工作負載之下依然保持即時響應性。 反應式系統可以對輸入(負載)的速率變化做出反應,比如透過增加或者減少被分配用於服務這些輸入(負載)的資源(參見 C.2.14)。 這意味著設計上並沒有爭用點和中心化的瓶頸, 從而可以分片或者複製元件, 並能夠在它們之間分發輸入(負載)。 透過提供相關的實時效能指標, 反應式系統支援預測式以及反應式伸縮演算法。 它們在常規的硬體以及軟體平臺上實現了成本高效的適應性/彈性(參見 C.2.6)。訊息驅動: 反應式系統依賴非同步的(參見 C.2.1)訊息傳遞(參見 C.2.10),從而在確保了鬆散耦合、 隔離和位置透明性(參見 C.2.9)的元件之間確立邊界。 這一邊界還提供了將失敗(參見 C.2.7)作為訊息委派出去的手段。 使用顯式的訊息傳遞,可以透過在系統中形成並監視訊息流佇列, 並在必要時應用回壓(參見 C.2.2), 從而實現負載管理、 適應性/彈性以及流控制。 使用位置透明的訊息傳遞作為通訊的手段, 使得跨叢集或者在單個主機中使用相同的構造和語義來管理失敗成為了可能。 非阻塞的(參見 C.2.11)通訊使得接收者可以只在活動時才消耗資源(參見 C.2.14), 從而減少系統開銷。