摘要:微服務(wù)項(xiàng)目的依賴關(guān)系在微服務(wù)化架構(gòu)中軟件項(xiàng)目被拆分成多個自治的服務(wù)服務(wù)之間通過網(wǎng)絡(luò)協(xié)議進(jìn)行調(diào)用通常使用透明的遠(yuǎn)程調(diào)用在領(lǐng)域每個服務(wù)上線后對外輸出的接口為一個包在微服務(wù)領(lǐng)域包被分為一方庫二方庫三方庫一方庫本服務(wù)在進(jìn)程內(nèi)依賴的包二方庫在服務(wù)外通
微服務(wù)項(xiàng)目的依賴關(guān)系
在微服務(wù)化架構(gòu)中, 軟件項(xiàng)目被拆分成多個自治的服務(wù), 服務(wù)之間通過網(wǎng)絡(luò)協(xié)議進(jìn)行調(diào)用, 通常使用透明的 RPC 遠(yuǎn)程調(diào)用.
在 Java 領(lǐng)域, 每個服務(wù)上線后, 對外輸出的接口為一個 jar 包. 在微服務(wù)領(lǐng)域, jar 包被分為一方庫、二方庫、三方庫.
一方庫: 本服務(wù)在 JVM 進(jìn)程內(nèi)依賴的 jar 包.
二方庫: 在服務(wù)外通過網(wǎng)絡(luò)通信或 RPC 調(diào)用的服務(wù)的 JAR 包.
三方庫: 所依賴的其他公司或者組織提供的服務(wù)或者模塊.
微服務(wù)項(xiàng)目的層級結(jié)構(gòu)Java 微服務(wù)項(xiàng)目的層級結(jié)構(gòu)一般為: 服務(wù)導(dǎo)出層、接口層和邏輯實(shí)現(xiàn)層, 如下圖.
其中, 每個層級的職責(zé)和最終的表現(xiàn)形式如下:
服務(wù)導(dǎo)出層: 最后會打包成一個 War 包, 包含服務(wù)的實(shí)現(xiàn) Jar 包、接口 Jar 包, 以及 Web 項(xiàng)目導(dǎo)出 RPC 服務(wù)所需要的配置文件等.
服務(wù)接口層: 包含業(yè)務(wù)接口、依賴的 DTO 及需要的枚舉類等, 最后打包成 Jar 包, 并發(fā)布到 Maven 服務(wù)器上, 也包含在服務(wù)導(dǎo)出層的 War 包中.
服務(wù)實(shí)現(xiàn)層: 包含業(yè)務(wù)邏輯實(shí)現(xiàn)類、依賴的第三方服務(wù)的包裝類, 以及下層數(shù)據(jù)庫訪問的 DAO 類等, 最后打包成 Jar 包, 包含在服務(wù)導(dǎo)出層的 War 包中.
Java 平臺下微服務(wù)實(shí)現(xiàn)層的架構(gòu)圖:
本地服務(wù)層通過 DAO 層與數(shù)據(jù)庫進(jìn)行交互. 這里使用了數(shù)據(jù)庫事務(wù), 保證了數(shù)據(jù)存取的強(qiáng)一致性, 業(yè)務(wù)流程層通過組合本地服務(wù)和外部服務(wù)來完成業(yè)務(wù)邏輯的實(shí)現(xiàn), 由于有遠(yuǎn)程服務(wù)的依賴, 因此只能保證數(shù)據(jù)的最終一致性.
這里有一個反模式, 切記永遠(yuǎn)不要在本地事務(wù)終調(diào)用遠(yuǎn)程服務(wù), 在這種場景下如果遠(yuǎn)程服務(wù)出現(xiàn)了問題, 則會拖長事務(wù), 導(dǎo)致應(yīng)用服務(wù)器占用太多的數(shù)據(jù)庫連接, 讓服務(wù)器負(fù)載迅速攀升, 在嚴(yán)重情況下會壓垮數(shù)據(jù)庫. 順便說一下, 雖然我們要竭力避免這種場景的發(fā)生, 但是數(shù)據(jù)庫也應(yīng)該有負(fù)載熔斷機(jī)制.
Java 平臺下微服務(wù)實(shí)現(xiàn)層的反模式架構(gòu)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72940.html
摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
摘要:近日,微軟對外發(fā)布了容器服務(wù)公共預(yù)覽版。同時(shí),和微軟在容器服務(wù)方面進(jìn)行了廣泛技術(shù)合作。重點(diǎn)的和兩項(xiàng)開源技術(shù)將微軟的與其他云容器服務(wù)提供商區(qū)分開來。是目前最成熟的容器編排引擎,微軟正是看中了這點(diǎn)才選擇了與合作。 小數(shù)點(diǎn)分享:開源技術(shù) Docker 的輕量化、敏捷性以及可移植性的優(yōu)點(diǎn),使其在全球IT領(lǐng)域廣受矚目,并將在 2016 年迎來全面爆發(fā)。微軟對于 Mesos 的支持,我們期待未來...
閱讀 1263·2021-11-08 13:25
閱讀 1452·2021-10-13 09:40
閱讀 2783·2021-09-28 09:35
閱讀 748·2021-09-23 11:54
閱讀 1139·2021-09-02 15:11
閱讀 2446·2019-08-30 13:18
閱讀 1681·2019-08-30 12:51
閱讀 2697·2019-08-29 18:39