響應式微服務 in Java 譯 --reactive systems<三>

Building Reactive Microservices in Javajava

CHAPTER 2  Understanding Reactive Microservices and Vert.xreact

Reactive Systems微信

在響應式開發做爲一種變成模型的時,響應式系統的架構風格也被用於構建分佈式系統(http://www.reactivemanifesto.org/),有一系列的原則用於快速響應請求,即便有失敗或者在高負荷下。架構

爲了構建這樣一個系統,響應式系統接收消息驅動的方法。全部的組件之間的交互使用異步消息的發送與接受,爲了減弱發送者和接收者,組件發送消息到虛擬地址的波動,還須要註冊虛擬地址來接受消息。地址是一個目的地標識,如一個不透明的(opaque)字符串或一個URL,多個服務能夠註冊到同一個地址--通信的語義取決於基礎技術,發送者可能延遲接收一個迴應,可是與此同時,他能夠接受和發送其餘消息。這裏異步的概念比較重要,影響應用是怎麼開發的,使用異步消息傳遞的相互做用提供了響應式系統的兩個關鍵特性。負載均衡

  • 伸縮性(Elasticity)--橫向拓展能力(scale out/in)異步

  • 快速恢復(Resilience 彈性)--處理故障和恢復的能力分佈式

伸縮性來自消息交互提供的解耦,使用負載均衡的策略,消息發送到一個地址被一系列的消費者消費掉。當響應式系統面臨一個峯值負載,能夠增長新的消費者來處理。微服務

沒有阻塞地處理失敗和組建複製的能力提供了這種彈性快速恢復的特徵,首先,消息交互容許組件本地故障的處理。得益於異步的特徵,組件不會等待迴應(response),所以一個組件上發生的失敗不會影響另一個,複製也是一個彈性的重要特徵,當一個節點處理消息失敗,消息能夠被註冊到同一個地址的其餘組件執行。ui

得益於這兩種特性,系統能夠快速反應,能夠適應高負荷和低負荷,而且能夠持續處理請求在高負荷和失敗的時候。這些原則可使分佈式系統的微服務能夠高分佈式的,當處理的服務超過能力範圍,這時須要運行多個服務的實例來平衡負載,處理失敗,持續提供服務。咱們將在下一章看看那Vert.x addresses的熱門話題。ci

Reactive Microservices

當建立一個微服務系統(分佈式),每個服務會改變,進化,失敗,表現出緩慢,或在任什麼時候間被撤掉,這些行爲都不能影響整個系統,你的系統有處理改變和失敗的能力,你可能以degraded(降級) mode運行,可是你的系統須要持續運行處理請求。

爲了確保這種行爲,響應式系統由響應式微服務構成,這些微服務有如下四種特性:

    • Autonomy(自治)

    • Asynchronisity(異步)

    • Resilience(快速恢復 彈性)

    • Elasticity(伸縮性 拓展)

響應式微服務是能夠自我管理的,他們能適應周圍的服務可用或不可用。然而,自治來搭配隔離,響應式微服務能夠本地處理失敗,獨立運行,若是須要,還會協調其餘的,響應式微服務使用異步的消息和其餘的 peers 互動。它也接收消息和對這些消息返回處理結果。

得益於異步消息形式,響應式微服務能夠面對失敗並相應地調整本身的行爲。失敗不該該被傳播,須要在根源處關閉。當微服務起來的時候,須要保證失敗不會傳播,這種隔離的原則是防止失敗的泡沫打破整個系統的關鍵特性。彈性不只事處理失敗,也是自我治療,當故障發生的時候,微服務應該實現恢復或者補償策略。

最後,一個響應式微服務必須是可拓展的,所以系統能夠更具負載來匹配實例的數量,這暗示着一系列的約束好比拒絕記憶狀態,若是須要在不一樣實例之間分享狀態,或者在形同的實例之間傳送狀態的信息。

 

原文地址:

https://developers.redhat.com/promotions/building-reactive-microservices-in-java/

有什麼討論的內容,能夠發我微信公衆號:

相關文章
相關標籤/搜索