在微服務化架構中, 軟件項目被拆分紅多個自治的服務, 服務之間經過網絡協議進行調用, 一般使用透明的 RPC 遠程調用.數據庫
在 Java 領域, 每一個服務上線後, 對外輸出的接口爲一個 jar 包. 在微服務領域, jar 包被分爲一方庫、二方庫、三方庫.服務器
Java 微服務項目的層級結構通常爲: 服務導出層、接口層和邏輯實現層, 以下圖.網絡
其中, 每一個層級的職責和最終的表現形式以下:架構
Java 平臺下微服務實現層的架構圖:併發
本地服務層經過 DAO 層與數據庫進行交互. 這裏使用了數據庫事務, 保證了數據存取的強一致性, 業務流程層經過組合本地服務和外部服務來完成業務邏輯的實現, 因爲有遠程服務的依賴, 所以只能保證數據的最終一致性.微服務
這裏有一個反模式, 切記永遠不要在本地事務終調用遠程服務, 在這種場景下若是遠程服務出現了問題, 則會拖長事務, 致使應用服務器佔用太多的數據庫鏈接, 讓服務器負載迅速攀升, 在嚴重狀況下會壓垮數據庫. 順便說一下, 雖然咱們要竭力避免這種場景的發生, 可是數據庫也應該有負載熔斷機制.spa
Java 平臺下微服務實現層的反模式架構blog