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