響應式微服務 in java 譯 <二十> 總結

咱們在一塊兒的旅程即將結束,但大家有許多新的途徑須要探索。咱們在這份小報告中涵蓋了不少內容,但確定沒有涵蓋全部內容!咱們剛剛觸及了表面。在轉向響應性微服務時,須要考慮更多的事情。Vert.x也不侷限於微服務,能夠處理大量不一樣的用例。java

What Have We Learned?react

你在這份報告裏學到了什麼?首先,咱們從微服務和什麼是響應性的微服務開始。咱們瞭解到reactive microservices 構成了響應式系統。咱們還看到了響應性編程如何幫助構建這些微服務。web

咱們發現了eclipse Vert.x,它是用於構建響應性微服務(其中包括許多其餘事情)的工具包。Vert.x提供了一個完美的範例來擁抱 microservices:異步、做爲一流的公民的failures,以及非阻塞。爲了馴服異步開發模型,Vert.x將其功率與RxJava結合起來。咱們的發現始於http microservices,以及如何使用它們。雖然http一般在 microservices 中使用,可是當咱們直接引用其中的實例時,咱們也看到了它的一個參數。爲了解決這個問題,咱們使用了在事件總線,並看到基於消息的microservices如何使您構建響反應的microservices,從而生成響應式系統。數據庫

固然,一個microservice 並不能構建一個系統。爲了構建系統,咱們必須使用服務發現。服務發現使得位置透明性和移動性成爲多用戶系統中的兩個重要特性。咱們還涵蓋了彈性模式,由於 microservice 系統是分佈式系統,您須要爲失敗準備。apache

在最後一章中,咱們將咱們的microservices部署到了基於上的開源容器平臺OpenShift之上。Vert.x和OpenShift的結合簡化了反應性微服務的部署和執行,並使整個系統保持在正軌上。編程

那麼,這就是結束嗎?否。這只是第一階段的結束。後端

Microservices Aren’t Easy瀏覽器

預計微服務將提升總體敏捷性。這不只是一個技術問題,也是一個組織問題.。若是您的組織不從組織角度接受microservices,那麼任何技術都不會幫助您。安全

雖然建造microservices看起來很簡單,但實際上還有不少事情要作。微服務系統是分佈式系統,所以涉及分佈式計算規律。失敗也是不可避免的。每一個微服務都應該擁有它的數據,您一般須要幾個持久性技術。服務器

爲了構建多功能系統,有幾個課題有待進一步研究。首先,爲了啓用所承諾的敏捷性,您將更頻繁地部署不一樣的子模塊。所以,持續交貨是關鍵。您還須要儘量自動化地實現您的服務器端的發佈和部署。不要忘記,您的微服務是可替換的,不變的鏡像傳遞是一個必須具有的特性來縮放。

可是,若是咱們部署的微服務是不可變的,咱們如何傳遞配置信息並可能從新配置它們?例如,如何更改日誌級別、配置數據庫位置和憑據、切換功能等等?配置是分佈式系統中很是重要的一部分,在微服務中是很困難的。全部的系統都是不一樣的,也沒有靈丹妙藥,可是有各類各樣的解決方案,從環境變量到Git存儲庫和專用配置服務器。雲平臺也提供配置能力。爲了減小這種多樣性,Vert.x幾乎能夠從任何地方檢索配置。

一旦部署和配置了微服務,就須要保持系統的正常運行。日誌記錄、度量和跟蹤是設計和開發一個基於數據的系統時要記住的重要問題。您必須從您的微服務中檢索記錄的消息、度量和跟蹤,以集中方式聚合它們,以啓用相關性和可視化。雖然日誌記錄和監視一般被很好地理解,但分佈式跟蹤經常被忽略。然而,在微服務中痕跡是無價的,由於它們會幫助您識別瓶頸、微服務之間的關係,並給您的系統響一個良好的想法。

The Evolution of the Microservice Paradigm

微型服務是動態的,並且老是不斷髮展的。最近,無服務器的趨勢,也被稱爲功能做爲一項服務,正在得到許多吸引力。在這個新的範例中,您的部署單元是一個函數。這些函數接收和處理消息。在範式強調部署、日誌記錄和跟蹤工具,可是促進了一個簡單的開發模型,並提升了系統的可擴展性,由於您能夠實例化許多函數實例,由於您須要處理負載。

http/2也在世界上取得了使人矚目的成功。它提升了http 1.1的性能和可擴展性,而且容許多個請求複用單個tcp鏈接。它還提供雙向通訊,GRPC是基於http/2的遠程處理調用(Rpc)框架,提供高性能、高性能、安全、雙向交互。它可以高效地鏈接數據中心和跨數據中心的服務,並使用插件支持負載平衡、跟蹤、Health check和身份驗證。它也適用於嵌入式設備、移動應用程序和瀏覽器。雖然rpc最初被認爲是有害於microservice系統的,但它仍然很是流行。GRPC解決了傳統rpc機制遇到的問題,例如阻塞調用和部分故障。可是,要注意,在提供者、用戶和消費者之間共享契約(接口)可能會限制您的敏捷性。Vert.x提供http/2的服務器端和服務器。此外,它還可以建立和消費基於服務的服務。

Vert.x Versatility

雖然本報告側重於響應式微服務,但這只是中的的一個方面。生態系統的豐富使得您可以開發出許多不一樣的應用程序。因爲它的執行模型,您的應用程序將是異步的,而且將接受無反應系統的魔法。

現代web應用程序爲用戶提供實時、交互式的體驗.。信息被推送到瀏覽器並沒有縫顯示。Vert.x事件總線能夠用做提供這種體驗的主幹。瀏覽器鏈接到事件總線並接收消息,還能夠在後端或與鏈接到事件總線的其餘瀏覽器上發送消息並與之交互。

物聯網(物聯網)是一個使人興奮的領域,但也很是使人興奮。智能設備使用了許多協議。mes常常必須從一個協議翻譯成另外一個協議。Vert.x爲客戶提供了大量協議來實現這些翻譯,而且它的執行模型可以處理構建物聯網網關所需的高級別協議。

這兩個例子說明了生態系統的豐富程度。Vert.x提供了無限的可能性,你負責的範圍。您可使用您喜歡的編程語言和您喜歡的開發模型來調整系統。不要讓框架控制-你是負責的。

 

About the Author

Clement·Esco(@clementplop)是紅帽公司的首席軟件工程師。他有好幾個職業生涯,從學術職位到管理人員。目前,他正在擔任一個長期的核心開發人員。他參與了涉及許多領域和技術的項目和產品,好比osgi、移動應用開發、連續交付和DevOps等。Clement 是許多開源項目的一個積極的決策工具,好比apache felix、iPOJO、智慧框架和eclipse Vert.x。

 

原文地址:

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

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

相關文章
相關標籤/搜索