国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

架構與設計 常見微服務分層架構的區別和落地實踐

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-10-22 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

從強調內外隔離的六邊形架構,逐漸發展衍生出的層層遞進、注重領域模型的洋蔥架構,再到和DDD完美契合的整潔架構。架構風格的不斷演進,其實就是為了適應軟件需求越來越復雜的特點。

可以看到,越現代的架構風格越傾向于清晰的職責定位,且讓領域模型成為架構的核心。

基于這些架構風格,在軟件架構設計過程中又有非常多的架構分層模型。

傳統三層架構

傳統服務通常使用三層架構:

?門面層:作為服務暴露的入口,處理所有的外部請求。部分情況下,門面層甚至不需要單獨定義對象而是直接使用服務層的實體定義。

?服務層:作為核心業務層,包含所有業務邏輯。并對基礎層能力進行簡單組合提供一定的能力復用。通常服務層會進行實體定義來防止下層對象體直接暴露給外部服務,導致底層任何變化都有可能直接傳遞到外部,非常不穩定。

?基礎層:用來存放dao和外部rpc服務的封裝,二者可以拆分為不同的module,也可合二為一,以不同package進行隔離。

三層架構特點就是簡單,適用于一些無復雜業務場景的小型應用,或者“數據不可變”作為基礎原則的DOP(面向數據編程)服務。

但是當業務場景稍微復雜一些、調用層級較多時,可復用性、可維護性就都非常差了,很多代碼都耦合在一起,牽一發動全身。

wKgaoWcXVYOABfykAACXUPb6uWA473.png

??

?

DDD架構

DDD架構可以看做是整潔架構的一種實現,分層職責如下:

?適配層:用來做外部不同端請求的適配器,隔離不同端的協議差異,包裝不同端不同樣式的響應體。

?應用層:用例、任務入口、消息隊列監聽均在這一層,可以理解為業務流程的入口,通過聚合根的構造執行相應的命令操作。

?領域服務層:包含核心的領域服務定義,并定義了gateway來做一層依賴倒置,使基礎設施層僅做實現。

?基礎設施層包含一切基礎能力:數據庫、ES、遠程調用封裝等等。

wKgZoWcXVYaAFWHcAAF5DXMtSP4093.png

??

優點

?核心穩定:領域模型在依賴鏈上是頂層角色,不依賴任何其他模塊,所以極其穩定。其他任何業務域、存儲、邊緣能力的變化都不會對領域模型造成影響。

?敏捷:適合不同團隊一起開發和維護而不會產生沖突。

?可拆分:當有屆上下文隨著演進逐漸膨脹時,很容易拆分成微服務。

?可擴展:添加新的功能非常簡單,從而使得開發人員能夠更快的部署和調整。

?可演進:良好的可測試性帶來非常低的重構成本,不會隨著不斷迭代導致項目成為難以修改的“大泥球”。

如此多的優點自然帶來明確的缺點

?專業性要求較高:需要對業務、架構原則理解深刻的人員進行設計和維護,不恰當的領域模型將使后續迭代極為痛苦。

?開發成本高:復雜的架構設計,更多的架構分層,自然帶來代碼行數的指數級增長。尤其是項目前期的開發任務變得異常繁重。

?不再適合簡單的業務場景:實現一個簡單的CRUD顯得過于復雜。

?改變決策困難:嘗試使用整潔架構需要和團隊的管理層和其他成員達成一致,這往往需要非常強大的說服力。如果在架構演進過程中想切換回其他架構模式也十分困難,幾乎是整個項目級別的重構工作。

簡單的微服務分層架構

基于六邊形架構規范的接口適配原則和防腐理念,同時借鑒了CQRS模式的優點,我們定義了一個簡單的微服務分層架構。

骨架Maven坐標:

com.jdt.open
simple-microservices-layered-architecture-archetype
1.4.0

分層定義:

?門面層:作為程序的入口,通過包隔離來存放JSF服務、Rest服務、定時任務和MQ消費,其中對外提供服務的接口定義存放在單獨的api包中。該層的請求定義命名以Request結尾,響應體命名以Response結尾。

?領域服務層:每一個領域服務存放在單獨的module中,并通過單獨的api包對外暴露能力。該層的命令請求定義命名以Command結尾,查詢請求定義命名以Query結尾,響應體命名以Dto結尾。

?基礎設施層:存放數據庫、ES、遠程調用服務的封裝。該層的持久化數據定義命名以Po結尾。遠程命令服務入參命名以RpcCommand結尾,遠程查詢服務入參命名以RpcQuery結尾,響應體命名以RpcDto結尾。

wKgaoWcXVYeAcF4cAAKr0lvCPic583.png

??

最佳實踐

1.命令服務必須訪問領域服務層,允許簡單查詢直接調用基礎設施層。

2.參數校驗、請求出入參日志、審計日志記錄、TraceID預埋、異常處理等非核心業務能力均由公共組件(參考: Open-Lab組件包 )完成,減少項目內部的邊緣能力代碼。

3.由于在門面層進行統一的異常處理,非必要時無需在項目中進行大面積的try-catch,讓代碼更清爽。

4.實際開發過程中,門面層、領域服務層和基礎設施層均有各自的實體定義,跨層調用的對象體轉換使用MapStruct組件來減少手寫映射代碼的工作量。

5.數據層使用Fluent-Mybatis,最大好處是減少后期迭代中,數據對象增減字段時修改Mapper的成本。

優點

1. 開發效率

簡單的業務開發過程中,相比較書寫核心業務邏輯,更多的工作量幾乎都是來自處理跨層調用時對象轉換和Mapper定義,通過MapStruct和Fluent-Mybatis等組件的使用(也許再加上GitHub Copilot

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分層架構
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6537
  • 微服務
    +關注

    關注

    0

    文章

    150

    瀏覽量

    8102
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    光伏四可裝置軟件系統架構微服務化設計與容器化部署方案

    ,某一模塊升級需整體停機,無法適配光伏場景對實時性與連續性的要求;物理機部署模式則導致環境一致性差,跨場景遷移成本高。為此,基于微服務化設計與容器化部署的軟件架構應運而生,通過“功能解耦、彈性部署、高效
    的頭像 發表于 03-03 15:47 ?173次閱讀

    Istio服務網格生產環境性能調優的最佳實踐

    隨著微服務架構的普及,服務間通信的復雜度呈指數級增長。傳統的應用層負載均衡和服務發現方案已經無法滿足現代云原生應用的需求。Istio作為目前最成熟的
    的頭像 發表于 01-20 15:40 ?206次閱讀

    請問各型號的CW32微控制器在核心架構上有何區別

    各型號的CW32微控制器在核心架構上有何區別
    發表于 12-16 07:52

    嵌入式軟件分層架構設計原則

    嵌入式軟件分層架構的設計原則如下: 模塊化和可擴展性:每一層應當保持松耦合,這樣當硬件變化或某些功能擴展時,只需要修改對應的層次,而不影響整體架構。 硬件無關性:上層代碼應當盡量避免直接依賴硬件
    發表于 11-28 07:05

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?
    發表于 11-20 06:21

    ARM架構與DSP有什么區別?哪一個更好?

    ARM架構與DSP有什么區別?哪一個更好?
    發表于 11-19 06:14

    西格電力面向行業用戶的綠電直連架構適配技術與實踐路徑

    實踐路徑,成為破解綠電直連“落地難、適配差、效益低”問題的關鍵,西格電力提供適配行業的綠電直連管理系統,助力綠電直連架構科學落地
    的頭像 發表于 11-18 11:04 ?277次閱讀

    Vector S2S方案在汽車電子電氣架構落地實踐

    隨著汽車電子電氣(E/E)架構從傳統的功能域逐步演進到區域化架構,系統復雜度急劇上升。在這種背景下,僅靠在開發階段精確定義組件與應用間的固定連接,已難以滿足現代車輛對靈活性與可擴展性的需求。
    的頭像 發表于 11-02 10:10 ?820次閱讀
    Vector S2S方案在汽車電子電氣<b class='flag-5'>架構</b>的<b class='flag-5'>落地</b><b class='flag-5'>實踐</b>

    華納云VPS容器服務網格流量管理:實現微服務高效路由

    在云計算和微服務架構日益普及的今天,華納云香港VPS憑借其優越的地緣優勢和網絡自由,成為眾多企業部署容器化應用的熱門選擇。復雜的微服務架構帶來了流量管理的巨大挑戰。本文將深入探討如何利
    的頭像 發表于 10-16 17:09 ?528次閱讀

    基于RFID與微服務架構的智能倉庫管理系統:實現倉儲數據的全鏈路精準采集與管控

    針對傳統倉儲管理中普遍存在的賬實不符、流程效率低下及信息孤島等問題,本文介紹一套基于RFID射頻識別技術與微服務軟件架構的智能倉庫管理系統。系統通過“一物一碼”的電子身份標識,實現了對物資從入庫
    的頭像 發表于 10-13 11:18 ?764次閱讀
    基于RFID與<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的智能倉庫管理系統:實現倉儲數據的全鏈路精準采集與管控

    分布式光伏環境監測站的技術架構與應用實踐

    分布式光伏環境監測站的技術架構與應用實踐 柏峰【BF-GFQX】一、系統技術架構解析 分布式光伏環境監測站采用“感知層-傳輸層-應用層”三層架構設計,實現環境數據的全鏈路智能化處理。
    的頭像 發表于 10-13 10:05 ?578次閱讀
    分布式光伏環境監測站的技術<b class='flag-5'>架構</b>與應用<b class='flag-5'>實踐</b>

    Jtti海外VPS微服務架構下的日志采集與分析優化方案

    隨著跨境業務和分布式應用的普及,越來越多的企業在海外VPS上構建微服務架構,以提升系統擴展性和靈活性。然而,微服務化帶來了一個新的挑戰:日志數據分散在多個服務和節點中,若缺乏統一采集與
    的頭像 發表于 08-27 17:13 ?567次閱讀

    深入剖析RabbitMQ高可用架構設計

    微服務架構中,消息隊列故障導致的系統不可用率高達27%!如何構建一個真正可靠的消息中間件架構?本文將深入剖析RabbitMQ高可用設計的核心要點。
    的頭像 發表于 08-18 11:19 ?956次閱讀

    電商API的微服務架構優化策略

    ? 隨著電子商務的快速發展,API(應用程序編程接口)已成為電商平臺的核心組件,負責連接用戶、商家和后臺系統。微服務架構通過將應用拆分為獨立、可擴展的服務單元,顯著提升了系統的靈活性和可維護性。然而
    的頭像 發表于 07-23 14:30 ?621次閱讀
    電商API的<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>優化策略

    常見的PFC拓撲架構及控制方法

    本期,芯朋微技術團隊將為各位fans分享常見的PFC拓撲架構及控制方法,為設計選型提供參考。
    的頭像 發表于 04-27 18:03 ?7541次閱讀
    <b class='flag-5'>常見</b>的PFC拓撲<b class='flag-5'>架構</b>及控制方法