精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

限界上下文—邏輯邊界or物理邊界?

開發 開發工具
本文將徹底對限界上下文做一個全方位的解剖,包括解讀限界上下文的定義、價值,了解限界上下文的三種邊界,并提出如何識別限界上下文的方法。

邊界通過限界上下文來確定,這在領域驅動設計中具有非凡的意義。對應于通用語言,限界上下文是語言的邊界,對于領域模型,限界上下文是模型的邊界,二者對應于問題空間(Problem Space)的界定。對于系統的架構,限界上下文還確定了應用邊界和技術邊界,進而幫助我們確定整個系統及各個限界上下文的解決方案。可以說,限界上下文是連接問題空間與解決方案空間的重要橋梁。

那么,限界上下文所界定的邊界,究竟是邏輯邊界,還是物理邊界?這并沒有定論,需得依據不同場景而做出不同的決策。

邏輯邊界

根據業務對領域進行邏輯分解時,分與合是兩個矛盾而又統一的概念。合是目標,分是降低復雜度的一種手段。分實則是為了更好的合。通過業務分解,每個分解出來的限界上下文規模就變得更小,因而更容易理解和把控。由于這種分解是從業務相關性來考慮的,使得領域可以更加細分,業務分析師或者領域專家就可以只要求掌握更加細分的專精領域。

從系統的代碼模型(Code Model)看,所謂邏輯邊界有兩種表現形式。以Java為例,歸納如下:

  • 命名空間級別:邏輯邊界僅僅通過命名空間進行界定,但是所有的限界上下文其實都處于同一個模塊中,編譯后都屬于同一個Jar包。
  • 模塊級別:在命名空間上是邏輯分離的,而不同限界上下文則屬于同一個項目的不同模塊,編譯后會生成各自的Jar包。若限界上下文之間存在依賴,則在運行時,這些Jar會被同時加載到同一個Java虛擬機中。這里所謂的“模塊”,在Java代碼中也可以創建為Jigsaw的module。

將限定上下文的邊界視為邏輯邊界是最常見也是最簡單的一種形式。一方面邏輯的分離可以保證系統代碼的清晰結構,另一方面它也使得限界上下文之間的協作變得更加容易,更加高效。在物理上,限界上下文彼此之間的通信其實是無縫集成的,要重用的領域模型都可以直接訪問,并對模型類進行實例化。如下是國際報稅系統的邏輯邊界(Java):

國際報稅系統的邏輯邊界(Java)

然而,正所謂越容易重用,就越容易產生耦合。編寫代碼時,我們需要謹守這條無形的邏輯邊界,時刻注意不要逾界,并確定限界上下文各自對外公開的接口,避免對具體的實現產生依賴。

采用邏輯邊界劃分限界上下文的系統架構是單塊(Monolithic)架構,所有的限界上下文都部署在同一個進程中,因此不能針對某一個限界上下文進行水平伸縮。需要對限界上下文的實現進行替換或升級時,會影響到整個系統。即使我們守住了邏輯邊界,這種耦合仍然存在,導致各個限界上下文的開發互相影響,團隊之間的協調成本也隨之而增加。

物理邊界

邏輯邊界的壞,正是物理邊界的好;反過來,物理邊界的壞,同樣是邏輯邊界的好。當我們將限界上下文的邊界定義為物理邊界時,每個限界上下文就變成了一個個細粒度的微服務。

這里,我們需要針對Eric Evans提出的“限界上下文”概念做進一步澄清:限界上下文究竟是僅僅針對領域模型的邊界劃分,還是對整個架構(包括基礎設施層以及需要使用的外部資源)垂直方向的劃分?正如前面對Eric Evans觀點的引用,他在《領域驅動設計》一書中明確地指出:“根據團隊的組織、軟件系統的各個部分的用法以及物理表現(代碼和數據庫模式等)來設置模型的邊界。”顯然,限界上下文不僅僅作用于領域層和應用層。它是架構設計而非僅僅是領域設計的關鍵因素。

倘若我們將限界上下文的邊界視為物理邊界,則可以保證邊界內的服務、基礎設施乃至于存儲資源、中間件等其他外部資源的完整性,最終形成自治的服務。限界上下文之間僅僅通過限定的方式以限定的通信協議和數據格式進行通信,除此之外,彼此沒有任何共享,這種架構被稱之為零共享架構。這種架構的表現形式為:每個限界上下文都有自己的代碼庫、數據存儲以及開發團隊,每個限界上下文選擇的技術棧和語言平臺也可以不同。當每個限界上下文都被物理隔離時,一個限界上下文的開發人員就不能調用另一個限界上下文的方法,或者將數據存儲在共享結構中了,這可以避免因為共享帶來的耦合。下圖為危機分析系統的架構:

危機分析系統的架構

物理分隔開的限界上下文變得小而專,使得我們可以很好地安排遵循2PTs規則的小團隊去治理它。然而,這種架構的復雜度也不可低估。限界上下文之間的通信是跨進程的,我們需要考慮通信的健壯性。數據庫是完全分離的,當需要關聯之間的數據時,需得跨限界上下文去訪問,無法享受數據庫自身提供的關聯福利。由于每個限界上下文都是分布式的,如何保證數據的一致性也是一件棘手的問題。當整個系統都被分解成一個個可以獨立部署的限界上下文時,運維與監控的復雜度也隨之而劇增。

數據庫共享

在邏輯邊界和物理邊界中間,還存在一種折中的手段。在考慮限界上下文劃分時,分開考慮代碼模型與數據庫模型,就可能出現在代碼上分離,而在數據庫層面卻存在數據共享的形式,即多個限界上下文共享同一個數據庫。

因為沒有分庫,在數據庫層面就可以更好地保證事務的ACID。這或許是該方案最有說服力的證據,但也可以視為是對“一致性”約束的妥協。

數據庫共享的問題在于數據庫的變化方向與業務的變化方向會不一致。這種不一致性體現在兩個方面:

  • 耦合:雖然業務上限界上下文之間是解耦的,但是在數據庫層面依然存在強耦合關系
  • 水平伸縮:部署在應用服務器的應用服務可以根據限界上下文的邊界單獨進行水平伸縮,但是在數據庫層面卻無法做到

根據Netflix團隊提出的微服務架構***實踐,其中一個最重要特征就是“每個微服務的數據單獨存儲”。但是服務的分離并不絕對代表數據應該分離。數據庫的樣式(Schema)與領域模型未必存在一對一的映射關系。在對數據進行分庫設計時,如果僅僅站在業務邊界的角度去思考,可能會因為分庫的粒度太小,導致不必要的跨庫關聯。因此,我們可以將“數據庫共享”模式視為一種過渡方案,不要在一開始設計微服務的時候,就直接將數據徹底分開,而是采用演進式的設計。

為了便于在演進設計中將分表重構為分庫,從一開始要注意避免在兩個表之間建立外鍵約束關系。某些關系型數據庫可能通過這種約束關系提供級聯更新與刪除的功能,這種功能反過來會影響代碼的實現。一旦因為分庫而去掉表之間的外鍵約束關系,需要修改的代碼太多,會導致演進的成本太高,甚至可能因為某種疏漏帶來隱藏的Bug。

沒有外鍵約束關系可能在當前增加了開發成本,卻為未來的演進打開了方便之門。例如,在針對某手機品牌開發的輿情分析系統中,危機查詢服務提供對識別出來的危機的查詢,需要通過userId獲得危機處理人、危機匯報人的詳細信息。左圖為演進前直接通過數據庫查詢的方式,右圖則切斷了這種數據庫耦合,改為服務調用的方式:

服務調用的方式

倘若架構被設計為數據庫共享,且兩個服務需要操作同一張數據表(這張表被稱之為“共享表”),則傳遞了一個信號,即我們的設計可能出現了錯誤:

  • 遺漏了一個限界上下文,共享表對應的是一個被重用的服務:買家在查詢商品時,商品服務會查詢價格表中的當前價格,而在提交訂單時,訂單服務也會查詢價格表中的價格,計算當前的訂單總額;共享價格數據的原因是我們遺漏了價格上下文,通過引入價格服務就可以解除這種不必要的數據共享。
  • 職責分配出現了問題,操作共享表的職責應該分配給已有的服務:輿情服務與危機服務都需要從郵件模板表中獲取模板數據,然后再調用郵件服務組合模板的內容發送郵件;實際上從郵件模板表獲取模板數據的職責應該分配給已有的郵件服務。
  • 共享表對應兩個限界上下文的不同概念:倉儲上下文與訂單上下文都需要訪問共享的產品表,但實際上這兩個上下文需要的產品信息是完全不同的,應該按照限界上下文的邊界分開為產品建表。

為什么會出現這三種錯誤的設計?根本原因還是在于我們沒有通過業務建模,而是在數據庫中隱式地進行建模,因而在代碼中沒有體現正確的領域模型,從而導致了數據庫層面的耦合或共享。

【本文為51CTO專欄作者“張逸”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-05-09 21:50:48

項目實踐上下文

2025-10-27 09:38:26

2017-05-11 14:00:02

Flask請求上下文應用上下文

2012-12-31 10:01:34

SELinuxSELinux安全

2022-09-14 13:13:51

JavaScript上下文

2022-09-15 08:01:14

繼承基礎設施基礎服務

2025-07-09 08:55:39

2022-10-28 16:24:33

Context上下文鴻蒙

2024-09-30 14:10:00

2025-03-18 08:14:05

2023-07-11 10:02:23

2020-07-24 10:00:00

JavaScript執行上下文前端

2021-07-26 07:47:36

Cpu上下文進程

2025-06-06 08:00:00

上下文管理器Python開發

2025-10-13 08:00:00

2022-07-05 08:09:26

領域驅動設計

2019-05-06 14:36:48

CPULinux寄存器

2022-04-24 15:37:26

LinuxCPU

2012-07-30 16:29:40

架構架構模式.NET

2025-10-31 01:00:00

點贊
收藏

51CTO技術棧公眾號

伊人久久av| 日本一区高清| 最新亚洲一区| 亚洲区在线播放| 91免费视频污| 欧美第一视频| 樱桃视频在线观看一区| 欧美日本韩国在线| www.黄色片| 免费看欧美女人艹b| 久久人人爽人人| 国产黄色录像视频| 美女一区2区| 777亚洲妇女| 99草草国产熟女视频在线| 国产剧情在线| 欧美高清一级片在线观看| 国产精品久久久久久久久久直播| 中文字幕人妻色偷偷久久| 亚洲美女91| 欧美不卡视频一区发布| 亚洲av无码一区二区三区人| 成人直播在线观看| 欧美一区二区免费| 久久久久久久久久久久91| 极品美鲍一区| 午夜视频在线观看一区二区 | 色哟哟精品一区| 国产女教师bbwbbwbbw| 视频一区二区三区不卡 | 性生交大片免费全黄| 狠狠综合久久av一区二区蜜桃| 亚洲成人久久网| 日本人dh亚洲人ⅹxx| 视频91a欧美| 欧美色爱综合网| 国产主播中文字幕| 香蕉久久免费电影| 色噜噜偷拍精品综合在线| 缅甸午夜性猛交xxxx| 污片视频在线免费观看| 亚洲毛片av在线| 黄色www在线观看| 思思99re6国产在线播放| 国产精品免费久久久久| 污视频在线免费观看一区二区三区| 午夜福利视频一区二区| av亚洲精华国产精华精| 国产欧美亚洲日本| 成人av一区二区三区在线观看| 国产乱妇无码大片在线观看| 91亚洲国产精品| 国产精品伦理一区| 国产乱子轮精品视频| 成人国产亚洲精品a区天堂华泰| 中文字幕久久网| 久久精品久久综合| 成人午夜激情免费视频| 精品久久久无码中文字幕| 国产综合成人久久大片91| 91欧美视频网站| 成人黄色免费视频| 99久久久无码国产精品| 欧美日韩精品免费看| 触手亚洲一区二区三区| 国产精品久久久久久久久快鸭 | 国产白丝一区二区三区| 91精品国产福利在线观看麻豆| 久久av.com| 精品视频一区二区在线观看| 国产精品一区毛片| 国产精品稀缺呦系列在线| 91麻豆国产视频| 韩国av一区二区三区在线观看| 亚洲一区国产精品| 欧美一区二区公司| 2021久久国产精品不只是精品| 日韩福利在线| 黄色国产网站在线播放| 午夜私人影院久久久久| 亚洲欧美国产日韩综合| 91久久精品无嫩草影院 | theav精尽人亡av| 精品国产一区探花在线观看 | 久久精品噜噜噜成人av农村| 成人av播放| 国外av在线| 一区二区三区在线高清| 无码人妻丰满熟妇区五十路百度| 免费一区二区三区四区| 精品国精品自拍自在线| 右手影院亚洲欧美| 亚洲大全视频| 日韩av123| 国产日韩欧美视频在线观看| 91亚洲精品久久久蜜桃网站| 一级做a爰片久久| zzzwww在线看片免费| 欧美日韩国产在线观看| 国产精品扒开腿做爽爽爽a片唱戏| 欧洲乱码伦视频免费| 欧美理论片在线观看| 无码人妻精品一区二区50| 国产米奇在线777精品观看| 精品欧美一区二区在线观看视频| 中文日本在线观看| 色悠久久久久综合欧美99| 成年人看片网站| 日韩精品久久| 57pao成人永久免费视频| 国产欧美第一页| 国产日产欧美一区二区三区| 亚洲国产精品无码观看久久| 国产一区二区三区四区五区3d| 日韩av中文字幕在线免费观看| 天天操夜夜操av| 久久人人精品| 精品免费二区三区三区高中清不卡 | 超碰10000| 欧美91在线|欧美| 亚洲一区999| av网站中文字幕| 成人午夜又粗又硬又大| 中文字幕在线中文| 成人51免费| www高清在线视频日韩欧美| 亚洲黄网在线观看| 99国产精品久久| 久久综合久久网| 91蝌蚪精品视频| 欧美国产精品日韩| www.国产黄色| 亚洲欧美日韩国产中文在线| 青青草久久伊人| 99久久九九| 91久久嫩草影院一区二区| 91官网在线| 欧美另类z0zxhd电影| 快灬快灬一下爽蜜桃在线观看| 香蕉久久久久久久av网站| 九色综合日本| 无遮挡在线观看| 国产视频精品免费播放| 伊人中文字幕在线观看| 久久久久久亚洲综合| 国产又黄又猛视频| 日本道不卡免费一区| 国产精品一区二区三| 91精品专区| 91精品国产综合久久久久久久 | 激情懂色av一区av二区av| 国内自拍偷拍视频| 亚洲国产高清视频| 精品久久蜜桃| 国产综合av| 色偷偷av一区二区三区乱| 国产精品爽爽久久| 亚洲美女在线一区| 无码人妻一区二区三区一| 午夜天堂精品久久久久| 国产伦精品一区二区三区四区视频 | 大又大又粗又硬又爽少妇毛片| 美女网站久久| 亚洲mv在线看| 免费欧美网站| 97香蕉久久超级碰碰高清版| 国产在线观看精品一区| 欧美日韩国产一区| 精品少妇一二三区| 久久嫩草精品久久久精品| www.涩涩涩| 在线中文字幕第一区| 国产亚洲福利社区| 日韩经典一区| 欧美理论电影在线观看| 污污视频在线观看网站| 欧美日韩在线播放三区| 69av视频在线| 2017欧美狠狠色| 五月天国产视频| 国产精品女主播一区二区三区| 欧美日韩一区二区视频在线观看| 欧美系列精品| 午夜精品99久久免费| 国产视频福利在线| 日韩午夜激情av| 日韩免费av网站| 亚洲精品视频免费观看| 成年人网站免费在线观看| 激情伊人五月天久久综合| 伊人成色综合网| 天天做天天爱天天综合网| 久久99热只有频精品91密拍| 亚洲天堂网站| 国产69精品久久久久久| av中文字幕在线播放| 亚洲欧美一区二区激情| 精品国产av鲁一鲁一区| 欧美在线一二三| 国产一级特黄视频| 国产精品福利av| 美国黄色a级片| 国产99久久精品| 中文字幕第38页| 免费看的黄色欧美网站| 91嫩草国产丨精品入口麻豆| 狠狠操综合网| 国模精品一区二区三区| 日本在线视频一区二区三区| 国产精品久久久久久久久久三级| 999精品网| 久久国产精品电影| 思思99re6国产在线播放| 亚洲乱码一区二区| 天堂网2014av| 日韩欧美亚洲一区二区| 国产免费高清av| 在线免费不卡电影| youjizz在线视频| 亚洲国产日韩综合久久精品| 一区视频免费观看| 国产精品久久久一区麻豆最新章节| 爱爱的免费视频| 99国产一区二区三精品乱码| 中文字幕第九页| 国产福利一区二区| 91网址在线观看精品| 久久成人综合网| 亚洲国产日韩欧美在线观看| 日韩精品一级中文字幕精品视频免费观看 | 手机在线看片日韩| 懂色av一区二区三区免费看| 亚洲图色中文字幕| 久久精品久久久精品美女| 天天爽夜夜爽一区二区三区| 日本成人在线一区| 欧美三级理论片| 免费在线观看精品| 日韩无套无码精品| 日韩国产欧美在线观看| 韩国日本美国免费毛片| 石原莉奈在线亚洲三区| 欧美两根一起进3p做受视频| 久久午夜视频| 国产91在线视频观看| 久久精品亚洲一区二区| 成人在线观看黄| 日韩影院精彩在线| 成年人三级黄色片| 国产在线不卡视频| 免费看三级黄色片| av电影天堂一区二区在线观看| 亚洲久久久久久| 久久蜜臀中文字幕| 欧美日韩生活片| 亚洲欧美日韩国产综合| 久久久久久久久久91| 香蕉成人啪国产精品视频综合网| 国产在线观看黄色| 欧美日韩小视频| 国产福利小视频| 日韩风俗一区 二区| 黄色av网址在线免费观看| 日韩中文在线中文网在线观看| 亚洲天天影视| 欧美丰满少妇xxxxx| 美女高潮在线观看| 国产精品你懂得| 精品国产鲁一鲁****| 韩日午夜在线资源一区二区 | 日韩精品成人| 久久久久久久久久久久久久一区| 欧洲杯什么时候开赛| 久久99国产精品一区| 伊人成人在线视频| 亚洲中文字幕久久精品无码喷水| 国产一区三区三区| 粉嫩av懂色av蜜臀av分享| 国产精品麻豆网站| 精品少妇久久久| 欧美色图天堂网| 欧美一级淫片免费视频魅影视频| 亚洲天堂一区二区三区| 午夜成年人在线免费视频| 欧美中文字幕视频| 精品视频一区二区三区| 欧美成人免费在线| 自拍欧美日韩| 99视频在线免费| 丁香另类激情小说| 懂色av粉嫩av浪潮av| 性做久久久久久免费观看欧美| 中文无码精品一区二区三区| 亚洲成av人乱码色午夜| 国产对白叫床清晰在线播放| 久久久久免费精品国产| 国产精品久久久久久久久免费高清 | 国产日韩影视精品| 久久久久久天堂| 欧美日韩国产小视频在线观看| 色哟哟国产精品色哟哟| 色婷婷久久av| 91看片一区| 国产一区二区三区色淫影院| 亚洲女同一区| 免费看污污网站| 久久综合久久综合久久综合| 欧美成人黄色网| 欧美剧在线免费观看网站 | 久热在线中文字幕色999舞| 成人直播视频| 国产专区一区二区三区| 中文不卡在线| 亚洲免费999| 欧美激情在线看| 黄色一级视频免费看| 亚洲精品wwwww| 久久av色综合| 亚洲一区久久久| 围产精品久久久久久久| av在线网址导航| 欧美国产97人人爽人人喊| 天堂网视频在线| 亚洲精品电影网| 高h视频在线播放| 99视频在线免费观看| 亚洲91中文字幕无线码三区| 欧美美女性视频| 中文字幕av一区二区三区免费看| 久久久久久在线观看| 精品香蕉一区二区三区| 国产理论在线| 99亚洲男女激情在线观看| 国产精品一区二区三区乱码| 亚洲一级黄色录像| 欧美性xxxx在线播放| 天堂av在线免费| 久久免费视频在线| 精品国产午夜肉伦伦影院| 国产精品视频二| 成人午夜在线视频| 久久精品女人毛片国产| 亚洲аv电影天堂网| 国产蜜臀av在线播放| 国产一区不卡在线观看| 亚洲三级色网| 免费在线观看成年人视频| 色综合天天综合色综合av| 日韩美女一级视频| 国产成人精品一区| 成人高清电影网站| 岛国av免费在线| 亚洲一区二区三区四区五区中文| 亚洲爱情岛论坛永久| 久久青草精品视频免费观看| 人体久久天天| 国产视频一区二区视频| 国产精品夫妻自拍| 亚洲av无码专区在线| 88xx成人精品| 欧美偷拍综合| 欧美一级小视频| 亚洲曰韩产成在线| 三级视频在线| 成人激情电影一区二区| 亚洲网站视频| 国产av自拍一区| 欧美久久久久久蜜桃| 毛片大全在线观看| 日韩.欧美.亚洲| 国产一区在线看| 800av免费在线观看| 在线看日韩av| av日韩精品| 欧美一级裸体视频| 亚洲国产人成综合网站| 国产视频在线看| 99在线首页视频| 日韩精品亚洲一区| 视频这里只有精品| 亚洲精品一区二区久| 国产精品免费精品自在线观看| 欧美这里只有精品| 中文字幕免费不卡| 色wwwwww| 国产女人精品视频| 亚洲国产导航| 久久国产高清视频| 亚洲韩国欧洲国产日产av| 久久久加勒比| 欧美精品99久久| 亚洲婷婷在线视频| 久久精品a一级国产免视看成人 | 国产日韩欧美高清| 亚洲欧美激情另类| 国产日韩精品在线播放| 先锋亚洲精品| 国产无码精品在线播放| 日韩中文字幕欧美| 国产精品一区二区99|