文章摘要: public String address(Address address) { … }關於如何在ServiceComb中使用Zipkin請參考分散式呼叫鏈追蹤 [6] 微服務間通訊提供檔案流傳輸能力
Apache ServiceComb 1.0.0 釋出了,此次更新的部分包括 Apache ServiceComb Java-Chassis 與 Apache ServiceComb ServiceCenter。
ServiceComb 微服務開源框架 是 Apache 軟體基金會的正式孵化專案,由華為於2017年6月開源,並於2017年12月正式進入Apache軟體基金會孵化,成為Apache軟體基金會孵化的首個微服務框架專案。
微服務開源框架 ServiceComb 致力於幫助企業快速構建雲原生應用,通過一系列解決方案幫助使用者快速開發微服務應用的同時實現對這些微服務應用的高效運維管理。其包括一站式的服務註冊、服務治理、動態配置功能,具備服務化契約增強、多語言支援、多通訊協議支援等優勢特性, 並提供SAGA資料最終一致性方案解決微服務架構資料一致性難題。ServiceComb 相容Spring Cloud等業界流行微服務框架,互通業界生態。
主要新增特性及提升如下
Java-chassis
https://github.com/apache/incubator-servicecomb-java-chassis
-
全新的監控指標(Metrics)模組,增加大量監控指標,支援Prometheus整合。詳情請參考Metrics介紹 [1]和如何整合Prometheus [2]
-
重構配置中心,支援對接攜程Apollo作為配置中心,並且可以方便的擴充套件對接其它三方配置中心。詳情請參考配置中心選型與對接 [3]
-
POJO程式設計模型支援使用者使用CompletableFuture非同步程式設計。詳情請參考使用透明RPC方式開發服務消費者 [4]中「reactive」部分。
-
POJO程式設計模型支援使用者使用Object和Generic型別作為呼叫引數。詳情請參考介面定義和資料型別 [5]
-
升級Zipkin到Zipkin2,同時支援v1和v2版本Zipkin server。關於如何在ServiceComb中使用Zipkin請參考分散式呼叫鏈追蹤 [6]
-
微服務間通訊提供檔案流傳輸能力,支援音樂、圖片等多媒體場景。如何使用檔案流傳輸請參考檔案上傳 [7]和檔案下載 [8]
-
在服務級別QPS控制基礎上,新增支援API級別QPS控制。現在支援使用servicecomb.flowcontrol.Consumer.qps.limit.[ServiceName].[Schema].[operation]配置API級別QPS控制。
-
增加腳手架和start.servicecomb.io,支援使用者快速構建工程,提供完整的開箱即用能力。現在建立一個ServiceComb微服務可以通過Apache Maven Archetype方式快速構建,更多詳細內容請參考ServiceComb Java Chassis Archetypes [9],您也可以直接訪問start.servicecomb.io [10]使用ServiceComb整合SPRING INITIALIZR UI的方式建立。
-
新增演示如何使用Gradle構建ServiceComb專案。我們在BMI [11]專案中增加了Gradle配置。
-
非同步程式設計模型支援AsycRestTemplate。關於如何使用請參考使用AsynRestTemplate開發服務消費者 [12]
-
新增支援Http2協議。關於如何使用請參考使用Http2通訊 [13]
-
實現錯誤注入介面,允許通過攔截服務請求構造異常場景,例如可以設定發往指定微服務的請求的時延和錯誤及其觸發概率。更多詳細內容請參考故障注入 [14]
-
新增服務Dev執行模式,開啟Dev模式時,支援契約動態修改。如何設定Dev執行模式請參考本地開發和測試 [15]中的「通過設定環境資訊方便本地除錯」部分。
-
實現優雅停機,關閉服務時進行反註冊,確保完成已接受請求並完整釋放資源。
-
擴充套件微服務公私鑰認證機制,增加了黑白名單功能。ServiceCenter已經支援通過黑白名單控制微服務的註冊發現,但是由於微服務之間最終是直連呼叫,因此微服務本身也需要有獨立的黑白名單認證功能,如何設定請參考公鑰認證 [16]中的「配置黑白名單」部分。
-
支援Cross-Origin Resource Sharing (CORS)。即支援跨域請求訪問設定,例如現在Ajax可以直接訪問微服務了,更多詳細內容請參考CORS機制 [17]
-
擴充套件了Rest Endpoint的Access Log機制。以前使用者只能設定Access Log的Pattern,現在使用者可以進一步自定義Access Log Item,更多內容請參考Access Log配置 [18]
-
SpringMVC程式設計模型現在同樣支援類物件作為引數。使用者可以使用類物件作為引數,例如:
@RequestMapping("/address") public String address(Address address) { ... } public class Address { String country; String city; }
將會自動轉化為/address?city={city}&country={country}。
-
部署在Tomcat等Web容器中的微服務,現在支援結合context path和servlet pattern的訪問路徑請求服務。例如呼叫路徑為cse://service/a/b…,部署在Tomcat等Web容器中後也支援以cse://service/{context path}/{servlet pattern}/a/b…為URL訪問。
-
預設自動掃描main函式所在包,簡化使用者配置。
-
提供客戶端ping機制,能夠通過ping擴充套件,檢測客戶端快取例項是否可用。該功能預設啟用,配合例項隔離功能對檢測失敗的例項進行隔離。
-
當微服務發生服務降級,例項隔離熔斷等狀況時,將觸發相應的Event,便於第三方整合(上報)。如何獲取這類Event請參考獲取熔斷與例項隔離告警事件 [19]
ServiceCenter
https://github.com/apache/incubator-servicecomb-service-center
-
主要新增瞭如下特性:
詳情請參考http://servicecomb.incubator.apache.org/docs/service-center-ui/
-
PACT Broker共享契約支援
-
支援AsycRestTemplate非同步程式設計
-
日誌分割(Log Rotation)
-
支援IPv6
-
支援後端儲存拓展
-
契約測試:支援使用前端對Swagger API進行測試
-
消費者服務自發現
-
穩定性提升及bug fix。
-
優化API介面,顯著提高效能。
-
優化Restful 客戶端及外掛載入器,提升易用性。
-
無縫整合metrics 及tracing 工具,提升監控能力。
-
增加了預設的TLS加密套件,提升基於規則的服務發現的安全性。
-
服務依賴管理採用事件驅動機制。
-
提升ETCD連結的彈性伸縮能力和自我修復能力。
-
Service-Center 支援在多基礎設施中部署。
-
優化前端介面UI,提供更多功能及提升易用性。
下載地址
來源: 微服務蜂巢