日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

架構(gòu)與設(shè)計 常見微服務(wù)分層架構(gòu)的區(qū)別和落地實踐

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

掃碼添加小助手

加入工程師交流群

前言

從強調(diào)內(nèi)外隔離的六邊形架構(gòu),逐漸發(fā)展衍生出的層層遞進、注重領(lǐng)域模型的洋蔥架構(gòu),再到和DDD完美契合的整潔架構(gòu)。架構(gòu)風(fēng)格的不斷演進,其實就是為了適應(yīng)軟件需求越來越復(fù)雜的特點。

可以看到,越現(xiàn)代的架構(gòu)風(fēng)格越傾向于清晰的職責(zé)定位,且讓領(lǐng)域模型成為架構(gòu)的核心。

基于這些架構(gòu)風(fēng)格,在軟件架構(gòu)設(shè)計過程中又有非常多的架構(gòu)分層模型。

傳統(tǒng)三層架構(gòu)

傳統(tǒng)服務(wù)通常使用三層架構(gòu):

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

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

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

三層架構(gòu)特點就是簡單,適用于一些無復(fù)雜業(yè)務(wù)場景的小型應(yīng)用,或者“數(shù)據(jù)不可變”作為基礎(chǔ)原則的DOP(面向數(shù)據(jù)編程)服務(wù)。

但是當(dāng)業(yè)務(wù)場景稍微復(fù)雜一些、調(diào)用層級較多時,可復(fù)用性、可維護性就都非常差了,很多代碼都耦合在一起,牽一發(fā)動全身。

wKgaoWcXVYOABfykAACXUPb6uWA473.png

??

?

DDD架構(gòu)

DDD架構(gòu)可以看做是整潔架構(gòu)的一種實現(xiàn),分層職責(zé)如下:

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

?應(yīng)用層:用例、任務(wù)入口、消息隊列監(jiān)聽均在這一層,可以理解為業(yè)務(wù)流程的入口,通過聚合根的構(gòu)造執(zhí)行相應(yīng)的命令操作。

?領(lǐng)域服務(wù)層:包含核心的領(lǐng)域服務(wù)定義,并定義了gateway來做一層依賴倒置,使基礎(chǔ)設(shè)施層僅做實現(xiàn)。

?基礎(chǔ)設(shè)施層包含一切基礎(chǔ)能力:數(shù)據(jù)庫、ES、遠程調(diào)用封裝等等。

wKgZoWcXVYaAFWHcAAF5DXMtSP4093.png

??

優(yōu)點

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

?敏捷:適合不同團隊一起開發(fā)和維護而不會產(chǎn)生沖突。

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

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

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

如此多的優(yōu)點自然帶來明確的缺點

?專業(yè)性要求較高:需要對業(yè)務(wù)、架構(gòu)原則理解深刻的人員進行設(shè)計和維護,不恰當(dāng)?shù)念I(lǐng)域模型將使后續(xù)迭代極為痛苦。

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

?不再適合簡單的業(yè)務(wù)場景:實現(xiàn)一個簡單的CRUD顯得過于復(fù)雜。

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

簡單的微服務(wù)分層架構(gòu)

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

骨架Maven坐標(biāo):

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

分層定義:

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

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

?基礎(chǔ)設(shè)施層:存放數(shù)據(jù)庫、ES、遠程調(diào)用服務(wù)的封裝。該層的持久化數(shù)據(jù)定義命名以Po結(jié)尾。遠程命令服務(wù)入?yún)⒚訰pcCommand結(jié)尾,遠程查詢服務(wù)入?yún)⒚訰pcQuery結(jié)尾,響應(yīng)體命名以RpcDto結(jié)尾。

wKgaoWcXVYeAcF4cAAKr0lvCPic583.png

??

最佳實踐

1.命令服務(wù)必須訪問領(lǐng)域服務(wù)層,允許簡單查詢直接調(diào)用基礎(chǔ)設(shè)施層。

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

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

4.實際開發(fā)過程中,門面層、領(lǐng)域服務(wù)層和基礎(chǔ)設(shè)施層均有各自的實體定義,跨層調(diào)用的對象體轉(zhuǎn)換使用MapStruct組件來減少手寫映射代碼的工作量。

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

優(yōu)點

1. 開發(fā)效率

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 分層架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6557
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    150

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    微電網(wǎng)分層控制:底層、中層、上層全鏈路設(shè)計

    規(guī)模化落地的關(guān)鍵。本文立足工程實踐,系統(tǒng)拆解微電網(wǎng)分層控制架構(gòu)的核心定位、全鏈路設(shè)計難點,詳細闡述各層級的設(shè)計要點、協(xié)同機制與關(guān)鍵技術(shù),結(jié)合工程案例驗證方案可行性,為微電網(wǎng)
    的頭像 發(fā)表于 04-23 17:15 ?972次閱讀
    微電網(wǎng)<b class='flag-5'>分層</b>控制:底層、中層、上層全鏈路設(shè)計

    云網(wǎng)融合時代:企業(yè)智能網(wǎng)絡(luò)架構(gòu)的技術(shù)演進與落地實踐

    前言企業(yè)數(shù)字化轉(zhuǎn)型進程中,多云部署、跨地域協(xié)同、邊緣業(yè)務(wù)爆發(fā)、AI應(yīng)用規(guī)?;?b class='flag-5'>落地,已成為IT架構(gòu)的新常態(tài)。傳統(tǒng)以物理專線為核心的廣域網(wǎng)架構(gòu),在成本、靈活性、智能性上的短板日益凸顯,云網(wǎng)融合作為新一代
    的頭像 發(fā)表于 03-31 14:06 ?1720次閱讀
    云網(wǎng)融合時代:企業(yè)智能網(wǎng)絡(luò)<b class='flag-5'>架構(gòu)</b>的技術(shù)演進與<b class='flag-5'>落地</b><b class='flag-5'>實踐</b>

    西格電力微電網(wǎng)總體架構(gòu)設(shè)計:分層分布式控制體系構(gòu)建

    總體架構(gòu)設(shè)計:分層分布式控制體系構(gòu)建》核心聚焦“總體架構(gòu)規(guī)劃”與“分層分布式控制落地”兩大核心,破解傳統(tǒng)集中式控制響應(yīng)滯后、可靠性不足、擴展
    的頭像 發(fā)表于 03-31 11:44 ?548次閱讀
    西格電力微電網(wǎng)總體<b class='flag-5'>架構(gòu)</b>設(shè)計:<b class='flag-5'>分層</b>分布式控制體系構(gòu)建

    Springboot+SpringData+SpringCloud微服務(wù)架構(gòu)課程

    ? 后端進階必學(xué):SpringCloud 微服務(wù)高可用落地實戰(zhàn) 在互聯(lián)網(wǎng)技術(shù)飛速迭代的今天,單體應(yīng)用架構(gòu)已逐漸難以承載億級流量的重?fù)?dān)。對于渴望突破瓶頸、邁向架構(gòu)師行列的后端開發(fā)者而言,
    的頭像 發(fā)表于 03-19 16:08 ?439次閱讀

    光伏四可裝置軟件系統(tǒng)架構(gòu)微服務(wù)化設(shè)計與容器化部署方案

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

    請問各型號的CW32微控制器在核心架構(gòu)上有何區(qū)別?

    各型號的CW32微控制器在核心架構(gòu)上有何區(qū)別
    發(fā)表于 12-16 07:52

    嵌入式軟件分層架構(gòu)設(shè)計原則

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

    芯源MCU架構(gòu)是不是基本都是ARM架構(gòu)?還有其他的架構(gòu)嗎?

    芯源MCU架構(gòu)是不是基本都是ARM架構(gòu)?還有其他的架構(gòu)嗎?
    發(fā)表于 11-20 06:21

    ARM架構(gòu)與DSP有什么區(qū)別?哪一個更好?

    ARM架構(gòu)與DSP有什么區(qū)別?哪一個更好?
    發(fā)表于 11-19 06:14

    華納云VPS容器服務(wù)網(wǎng)格流量管理:實現(xiàn)微服務(wù)高效路由

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

    基于RFID與微服務(wù)架構(gòu)的智能倉庫管理系統(tǒng):實現(xiàn)倉儲數(shù)據(jù)的全鏈路精準(zhǔn)采集與管控

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

    分布式光伏環(huán)境監(jiān)測站的技術(shù)架構(gòu)與應(yīng)用實踐

    分布式光伏環(huán)境監(jiān)測站的技術(shù)架構(gòu)與應(yīng)用實踐 柏峰【BF-GFQX】一、系統(tǒng)技術(shù)架構(gòu)解析 分布式光伏環(huán)境監(jiān)測站采用“感知層-傳輸層-應(yīng)用層”三層架構(gòu)設(shè)計,實現(xiàn)環(huán)境數(shù)據(jù)的全鏈路智能化處理。
    的頭像 發(fā)表于 10-13 10:05 ?764次閱讀
    分布式光伏環(huán)境監(jiān)測站的技術(shù)<b class='flag-5'>架構(gòu)</b>與應(yīng)用<b class='flag-5'>實踐</b>

    Jtti海外VPS微服務(wù)架構(gòu)下的日志采集與分析優(yōu)化方案

    隨著跨境業(yè)務(wù)和分布式應(yīng)用的普及,越來越多的企業(yè)在海外VPS上構(gòu)建微服務(wù)架構(gòu),以提升系統(tǒng)擴展性和靈活性。然而,微服務(wù)化帶來了一個新的挑戰(zhàn):日志數(shù)據(jù)分散在多個服務(wù)和節(jié)點中,若缺乏統(tǒng)一采集與
    的頭像 發(fā)表于 08-27 17:13 ?716次閱讀

    深入剖析RabbitMQ高可用架構(gòu)設(shè)計

    微服務(wù)架構(gòu)中,消息隊列故障導(dǎo)致的系統(tǒng)不可用率高達27%!如何構(gòu)建一個真正可靠的消息中間件架構(gòu)?本文將深入剖析RabbitMQ高可用設(shè)計的核心要點。
    的頭像 發(fā)表于 08-18 11:19 ?1117次閱讀

    電商API的微服務(wù)架構(gòu)優(yōu)化策略

    ? 隨著電子商務(wù)的快速發(fā)展,API(應(yīng)用程序編程接口)已成為電商平臺的核心組件,負(fù)責(zé)連接用戶、商家和后臺系統(tǒng)。微服務(wù)架構(gòu)通過將應(yīng)用拆分為獨立、可擴展的服務(wù)單元,顯著提升了系統(tǒng)的靈活性和可維護性。然而
    的頭像 發(fā)表于 07-23 14:30 ?743次閱讀
    電商API的<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>優(yōu)化策略
    神农架林区| 北碚区| 永仁县| 扶沟县| 鄂托克前旗| 山阴县| 七台河市| 苏尼特右旗| 闽侯县| 民和| 潢川县| 饶阳县| 清远市| 伊吾县| 启东市| 广安市| 迭部县| 宁晋县| 平潭县| 咸丰县| 平乡县| 额尔古纳市| 雷州市| 宣武区| 绩溪县| 建湖县| 赤水市| 达日县| 丽江市| 泽普县| 尚志市| 漠河县| 绥化市| 陵川县| 夏河县| 肥西县| 理塘县| 南汇区| 清水河县| 旬阳县| 永春县|