国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

詳解多云架構下的JAVA微服務技術解析

瀏覽:5日期:2022-08-12 14:59:10
目錄微服務生態(tài)多云微服務架構的兩種方案采用開源微服務框架適配多供應商開發(fā)框架微服務生態(tài)

微服務生態(tài)本質上是一種微服務架構模式的實現(xiàn),包括微服務開發(fā)SDK,以及微服務基礎設施。

目前比較成熟的 JAVA 微服務生態(tài)包括 servicecomb(華為), spring-cloud (Pivotal), dubbo(阿里), tsf(騰訊)等。gRPC、Thrift 等也用于內部服務之間的通信,但是微服務基礎設施比較欠缺。

核心的微服務基礎設施包括:注冊中心、配置中心、應用網(wǎng)關。此外,分布式事物管理、計劃任務、調用鏈跟蹤系統(tǒng)等也是微服務基礎設施的組成部分。完整的微服務基礎實施還包括開發(fā)使能工具,包括接口管理工具、灰度發(fā)布管理、代碼生成等,這部分主要由云廠商提供,比較少開源方案。

微服務生態(tài)的核心是 SDK,而 SDK 的核心是 RPC 框架,這個是不同微服務生態(tài)的本質區(qū)別。在基礎設施方面,不同的微服務生態(tài)是可以相互選擇的,比如 spring-cloud 生態(tài)可以采用 spring-cloud-huawei 接入servicecomb 提供的注冊中心 servicecomb-service-center、配置中心 servicecomb-kie,也可以通過 spring-cloud-alibaba 接入阿里的配置中心;servicecomb 也可以通過引入擴展,使用其他的配置中心。一些基礎的開發(fā)組件,比如 spring、spring boot,這些微服務開發(fā) SDK 都支持集成。

詳解多云架構下的JAVA微服務技術解析

對微服務生態(tài)進行比較是一個很難的課題。下面的表格僅對一些核心功能進行比較。使能工具、核心基礎設施、可選基礎設施等方面,不同的微服務生態(tài)是可以相互使用的,這里的比較只針對該生態(tài)原生提供的來說,并不代表某個微服務生態(tài)缺少這塊功能,該生態(tài)的開發(fā)者用不了這方面的能力。對于開源生態(tài)應該采用一個大生態(tài)的眼光來看待,每個生態(tài)的設計者也會盡可能融入其他生態(tài),繼承和復用其他生態(tài)的能力。但是在商業(yè)選型上,需要考慮技術支持等因素。

詳解多云架構下的JAVA微服務技術解析

對微服務生態(tài)的比較的另外一個視角就是如何構建微服務應用架構。 一般的微服務應用架構會包括應用網(wǎng)關、業(yè)務微服務和靜態(tài)頁面。靜態(tài)頁面的部署相對比較靈活,可以放到應用網(wǎng)關內部,也可以放到應用網(wǎng)關,還可以放到應用網(wǎng)關外面。其中放到網(wǎng)關里面的方式最靈活,比如可以通過配置網(wǎng)關的負載均衡策略,將請求轉發(fā)到用戶最近的region,也可以對部分靜態(tài)頁面進行訪問控制。

增加應用網(wǎng)關可以增強應用系統(tǒng)的彈性,能夠支撐系統(tǒng)的持續(xù)演進(參考分析文章),同時可以結合網(wǎng)絡基礎設施,更好的實現(xiàn)應用系統(tǒng)的能力開放。比如如果接入層使用 API Gateway 掛載,可以很好的實現(xiàn)內部系統(tǒng)的能力開放和計費;使用LVS接入,只可以提高轉發(fā)性能,比較適合訪問量大的應用,接入網(wǎng)關邏輯少,應用網(wǎng)關可以彈性擴容;使用DNS則對于網(wǎng)站很有用,屏蔽用戶訪問的地址差異,并且可以使用DNS將請求轉發(fā)到不同區(qū)域的應用網(wǎng)關。

Servicecomb, spring-cloud 都能夠很好的支持這種架構,而 dubbo 對這種架構支持的不是很好,很多 dubbo 開發(fā)者都是通過在業(yè)務服務之外增加一個接入層,使用 spring-cloud 的應用網(wǎng)關來搭建這個應用架構。

詳解多云架構下的JAVA微服務技術解析

多云微服務架構的兩種方案采用開源微服務框架

很多業(yè)務系統(tǒng)的構建,都是從選擇一個開源方案開始。 一般會首先選擇一個微服務開發(fā) SDK, 然后選擇其他的微服務基礎設施。 對于自主研發(fā)的情況,微服務基礎設施也會選擇開源方案。 比如選擇 ServiceComb 微服務開發(fā) SDK 的場景,可以通過在不同的云上部署開源服務,來實現(xiàn)一套系統(tǒng),多個云上運行。 云廠商如果存在微服務基礎設施的商業(yè)版本, 可以在云上購買使用, 使用云產商提供的基礎設施服務,通??梢越档妥约哼\維的成本,并能夠得到更好的性能優(yōu)化和可靠性支持。

詳解多云架構下的JAVA微服務技術解析

另外一個開源解決方案是部分集成云產商提供的組件,盡可能多的使用云產商的基礎設施。 比如選擇 Spring Cloud 微服務解決方案, 可以使用 spring-cloud-huawei, spring-cloud-alibaba 等云產商提供的擴展,使用云上的基礎設施。

詳解多云架構下的JAVA微服務技術解析

下面對開源解決方案的評估點做一個總結:

1. 只需要維護一套代碼和熟悉一個開發(fā)框架,多云運行。不同云的運行體驗存在差異,可以部分使用云廠商的中間件。 如果其他云沒有對應的中間件,需要自行安裝和維護中間件。

2. 微服務框架選型之前,需要考慮“基礎設施”是否也開源。比如微服務基礎設施最重要的中間件“配置中心”、“注冊中心”和“應用網(wǎng)關”。開源可獲得性是一套代碼,多云運行的前提。

適配多供應商開發(fā)框架

每個云產商都存在一個主打的微服務開發(fā)框架, 使用主打微服務開發(fā)框架能夠最好使用云產商提供的微服務基礎設施。 為了在不同的云上, 獲得最佳的微服務管理能力,需要盡可能使用對應云的主打框架。 但是維護多套代碼是困難的。 適配多供應商的開發(fā)框架, 需要對核心業(yè)務做好分離,避免重復開發(fā),然后將適配層做薄,只實現(xiàn)簡單適配,降低開發(fā)難度。 大部分 JAVA 微服務開發(fā)框架都支持 Spring, 因此可以采用下面的設計模式,實現(xiàn)一套核心代碼,編譯成多個云產商開發(fā)框架的可執(zhí)行程序的多云版本。

詳解多云架構下的JAVA微服務技術解析

上圖是一個微服務的內部結構,一個微服務可能包含如下幾個目錄:

* application-core

* application-runtime-servicecomb

* application-runtime-hsf

下面對適配多供應商開發(fā)框架方案的評估點做一個總結:

1. 需要做好業(yè)務抽象,并熟悉多個開源微服務開發(fā)框架,相對于開源自建方案維護成本高。

2. 不需要考慮自行安裝和維護基礎中間件的問題,云廠商自己的微服務框架,一般針對這個框架提供了各種中間件支持,使用和接入開發(fā)成本低。

3. 這種方案是優(yōu)秀代碼架構設計。在開源方案中,也建議做好核心業(yè)務邏輯分離和接口抽象,每個方案適配不同云廠商非微服務基礎設施(比如數(shù)據(jù)庫、對象存儲、EI等功能)也都是需要的。

以上就是詳解多云架構下的JAVA微服務技術解析的詳細內容,更多關于多云架構下的JAVA微服務技術解析的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 金华市| 咸丰县| 岐山县| 广河县| 民勤县| 桃园县| 交口县| 原平市| 南皮县| 天等县| 凤山县| 鄂托克前旗| 万荣县| 安福县| 河北区| 孙吴县| 无极县| 公主岭市| 武宣县| 遂平县| 娱乐| 鸡泽县| 涞水县| 海原县| 宣汉县| 阿勒泰市| 大化| 留坝县| 东光县| 武威市| 沅江市| 慈溪市| 且末县| 旌德县| 平山县| 博野县| 宕昌县| 黄石市| 瑞昌市| 牡丹江市| 广东省|