雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

微服務架構模式的核心包含如下幾部分:
- 微服務之間的 RPC 通信。Java Chassis 提供了非常高效的通信方式,并支援多協定擴充,比如最快的 REST 通信模式實作, 異步的二進制通信模式 HIGHWAY 。
- 分布式微服務執行個體和服務發現。結合 ServiceComb Service Center, 實作分布式、多叢集服務發現能力,以及強大的微服務中繼資料管理能力。
- 配置外置,動态、集中的配置管理。能夠使用 ServiceComb Kie, 華為雲配置中心、 Nacos、 Apollo 等多種配置中心, 并且和 Spring Boot 配置管理能力完整融合。
- 分布式故障管理,服務容錯、隔離、熔斷。内置故障執行個體隔離、故障重試、耗時接口隔離等重要分布式故障處理能力。可選使用 Hystrix 的 容錯、隔離、熔斷能力, 隻需要做簡單的配置。
- 分布式日志追蹤。提供 Open Tracing 支援。
此外還有性能監控,日志記錄系統、健康檢查等。Java Chassis 采用優雅的設計模式,實作了上述所有的核心部件的功能,并且使得這些功能 開箱即用。使用 Java Chassis , 開發者能夠更加聚焦于業務功能開發,快速的建構商業可用的微服務應用。
Java Chassis 的軟體工程實踐
Java Chassis 在設計的時候, 不僅考慮了如何更好的使用微服務架構模式, 還把優秀的軟體工程思想融合進來, 幫助開發者更好的管理資訊 資産, 提升軟體工程管理能力。
下圖簡單的描述 “以契約為中心” 的核心概念。
可以通過 Invocation 擷取到 Java Chassis 的契約等源資料資訊, 是 Java Chassis 的一個核心對象。
Java Chassis 的運作時架構
為了支援軟體工程實踐, Java Chassis 的運作時架構是一個啞鈴結構, 兩端分别是“程式設計模型” 和 “通信模型”, 中間是“運作模型”。
“程式設計模型” 面向開發者寫服務接口的習慣, “通信模型” 面向微服務之間的高效編碼和通信, “運作模型” 基于“契約”, 提供一種服務服務無關 的插拔機制,能夠讓開發者獨立于業務實作開發治理功能,并且靈活的移除和增加功能,以及調整這些治理功能的處理順序。
“運作模型” 的核心抽象接口是 Handler , 這個接口是一個異步的定義, Java Chassis 運作時模型采用純異步的實作, 讓整個系統運作非常 高效。
Java Chassis 微服務應用架構
有很多優秀的微服務應用架構實踐。微服務應用架構應該充分考慮系統的彈性, 能夠針對系統的性能瓶頸點進行擴容, 需要考慮應用系統内部微服務 拆分的靈活性, 為業務的變更做好及時調整。
下圖展示了一個典型的應用架構。接入層采用一些網絡基礎設施,比如 DNS , 浮動 IP 等友善使用者采用統一的 URL 通路系統, 或者采用 API 網關等 基礎設施實作系統的能力開放。業務層包含應用網關, 進行一些認證鑒權、 審計等功能, 經過認證的請求被應用網關轉發到微服務系統内部。
Java Chassis 微服務技術選型
Java 語言擁有龐大的技術體系和标準, 并且廣泛的應用到業務的系統的各個方面。和 Java Chassis 有緊密關系的技術包括 JSP/Servlet 标準 和容器, Spring 和 Spring Boot 技術, 以及 Spring Boot 提供的 REST 開發架構 Spring MVC。
Java Chassis 和 JSP/Servlet 标準
Java Chassis 不依賴于 JSP/Servlet 标準, 可以基于 Vert.x 的 HTTP 實作, 提供非常輕量級和高效的 REST 服務, 在性能要求高的核心 業務場景, 使用這種輕量級的技術非常合适。這種場景下, 沒有完整的實作 JSP/Servlet 相關接口, 比如 HttpServletRequest, HttpServletResponse 等。 servicecomb-samples (
https://github.com/apache/servicecomb-samples/tree/master/porter_lightweight) 提供了一個完整的使用這種部署模式的例子。
Java Chassis 可以部署運作于 JSP/Servlet 容器裡面, 在這個場景下, Java Chassis 的核心部件就是一個 Servlet , 在這個 Servlet 裡面 實作了 Java Chassis 的核心 RPC 系統。采用 JSP/Servlet 容器運作 Java Chassis, 業務請求首先經過容器的 HTTP 實作, 然後經過 Filter, 進入 Java Chassis 的 RestServlet , 運作 Java Chassis 的運作時模型 (Handlers) , 進入業務接口處理。
Java Chassis 和 Spring、Spring Boot
Java Chassis 目前依賴于 Spring, 但是從設計上是可以獨立于 Spring 運作的。Spring 是被廣泛使用的技術, 非常輕量級, 在 Java Chassis 中可以直接使用 Spring 相關的技術。Java Chassis 不依賴于 Spring Boot, 但是可以将 Java Chassis 運作于 Spring Boot 基礎之上。
Spring Boot 2 開始也提供了多種運作環境支援, WebApplicationType.NONE, WebApplicationType.SERVLET, WebApplicationType.REACTIVE, Java Chassis 可以內建 NONE, SERVLET 兩種模式。在 NONE 模式下內建 Java Chassis, 和 Spring Boot 自身的 REACTIVE 非常類似, 但是比 Spring Boot 的 REACTIVE 運作更加高效, 并且支援早期的 RestTemplate API 和 RPC API 來通路服務。
- Spring MVC
Java Chassis 繼承了 Spring MVC 的接口設計, 提供了 Provider 和 Consumer 層面的 API 接口來定義 REST 接口和通路 REST 接口。但是需要 注意的是, 兩個是完全不同的實作, 實作機制也不一樣。Spring Boot 主要基于 Servlet, 實作了 MVC 模式, 不僅可以開發 REST 接口, 還可以 開發其他 HTTP 功能, 比如重定向, 傳回 HTML 頁面等, 還可以通過 @ExceptionHandler, @ControllerAdvice 等機制攔截 Servlet 請求,進行 異常處理。Java Chassis 隻實作了 REST 服務定義和調用, 并且在異常處理機制和請求攔截機制上不一樣。
Java Chassis 與 Spring Cloud
Java Chassis 和 Spring Cloud 都實作了微服務架構模式, 相比而言, Java Chassis 是一個更加緊湊的實作, 開箱即用, 而 Spring Cloud 則是 相對松散的實作, 整合了大量的 Hystrix 元件。
微服務架構模式關注微服務内部和微服務之間的設計, 也關注微服務與微服務基礎設施之間的關系。Java Chassis 微服務基礎設施包括服務注冊和發現, 服務配置管理, 灰階釋出和契約管理等功能。Spring Cloud 可以使用 spring-cloud-huawei (
https://github.com/huaweicloud/spring-cloud-huawei) 來使用 Java Chassis 相關的微服務基礎設施。
【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/zhibo立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-04-02
本文作者:sandag
本文來自:“
51CTO”,了解相關資訊可以關注“
”