InfoQ參加了于10月份舉行的2017 JAXLondon大會(huì),來(lái)自IBM的Emily Jiang呈現(xiàn)了有關(guān)Eclipse MicroProfile的演講。Emily在演講中先是簡(jiǎn)單介紹了Eclipse MicroProfile的歷史,然后詳細(xì)介紹了MicroProfile的容錯(cuò)能力,最后介紹了未來(lái)的計(jì)劃,包括MicroProfile將涵蓋的內(nèi)容以及與Java開(kāi)發(fā)者之間的合作。
MicroProfile被設(shè)計(jì)用于配置微服務(wù),1.0版本于2016年9月份發(fā)布,1.1版本于2017年8月份發(fā)布,1.1是以Eclipse基金會(huì)名義發(fā)布的第一個(gè)版本。
MicroProfile 1.0基于Java EE 7,使用了CDI+JSON-P+JAX-RS技術(shù)棧,而1.1版本使用了新的配置技術(shù)棧,以便提升可移植性。
Emily深入介紹了最近發(fā)布的MicroProfile 1.2,新版本包含了很多新特性,比如應(yīng)用層面的度量指標(biāo)、通過(guò)部署到單核Kubernetes環(huán)境進(jìn)行健康檢測(cè)。1.2版本的主要新特性是提升容錯(cuò)能力,微服務(wù)之間可以通過(guò)JWT在一個(gè)安全的環(huán)境里發(fā)生交互。
接下來(lái),Emily介紹了新的容錯(cuò)API,先是介紹了一些注解,如@Retry、@Timeout和@Bulkhead。@Bulkhead通過(guò)隔離線程(默認(rèn)是10個(gè))避免局部失效影響到整個(gè)系統(tǒng)。應(yīng)用程序可以組合使用@Bulkhead和@Asynchronous,使用單獨(dú)的線程來(lái)執(zhí)行任務(wù)。
MicroProfile 1.2引入了@CircuitBreaker,用于支持容錯(cuò)和失效檢測(cè)。該注解告訴運(yùn)行時(shí),一旦出現(xiàn)回路斷路(也就是回路被打開(kāi)),就會(huì)立即發(fā)生失效。一個(gè)關(guān)閉的回路將按照預(yù)期設(shè)計(jì)的方式調(diào)用服務(wù)。
新API還提供了@Fallback注解,用于指定回退處理器,在目標(biāo)服務(wù)不可用時(shí)回退到調(diào)用默認(rèn)的服務(wù)。該特性需要在應(yīng)用程序?qū)用鎸?shí)現(xiàn),因?yàn)榈讓酉到y(tǒng)并不提供回退機(jī)制。
除了介紹MicroProfile的容錯(cuò)機(jī)制,Emily還提到了Istio平臺(tái)。她說(shuō),如果使用了Istio,那么完全可以禁用MicroProfile中除回退機(jī)制之外的容錯(cuò)功能,使用Istio提供的容錯(cuò)機(jī)制來(lái)替代。
Emily還簡(jiǎn)單介紹了MicroProfile的發(fā)展路線圖,在2.0版本之前,1.3版本有可能支持Open Tracing和Open API。2.0版本有可能支持EE 8的其他技術(shù)。
Emily做了一個(gè)簡(jiǎn)短的OpenLiberty演示,展示了MicroProfile 1.2版本的特性。更多的相關(guān)細(xì)節(jié)可以在Eclipse MicroProfile網(wǎng)站上看到。
查看英文原文:Accelerating the adoption of Java microservices with Eclipse MicroProfile