DDD之領域,子域,限界上下文

領域

從廣義上來講,領域即是一個組織所做的事情以及其中所包含的一切。一般來講商業機構會確定一個市場,然後在這個市場中銷售產品和服務。每個組織都有它自己的業務範圍和做事方式,這個業務範圍以及在其中所進行的活動就是領域。

子域

由於領域的概念通常都過大,所以我們一般都會將其進行拆分,諸如核心域,通用域,支持域。一般來講核心域就是整個產品的業務價值所在,是一個組織盈利的根本。或者按照業務來拆分,諸如訂單子域,產品子域,物流子域等。

限界上下文

限界上下文簡單來理解就是物理系統。由於微服務的興起,一般來講一個子域很有可能就是對應一個限界上下文。但是在前期業務量不大的情況下,可以採用一個限界上下文跨越多個子域的方式進行集成。

以一個產品零售的例子。領域,子域,限界上下文的概念圖如下
在這裏插入圖片描述
這裏我們可以看出電子商務系統橫跨了產品目錄子域,訂單子域,發票子域,物流子域。隨着業務的發展,我們可能需要將其按照子域拆分,拆分成產品系統,發票系統,訂單系統,物流系統。

如何集成限界上下文

集成限界上下文有很多種方式,常見的如下

  • RPC調用
    這是最簡單的一種方式,常見的方案如dubbo,spring cloud。只要在一個限界上下文中暴露應用程序編程接口,然後在另外一個限界上下文中調用即可。
  • 消息機制
    採用觀察者模式,其中一個限界上下文訂閱另外一個限界上下文中的消息,然後異步消費即可。這種集成方案通常會存在延時,但是可以保證最終一致性。
  • RESTFul
    一個限界上下文向另外一個限界上下文發送請求的方式,如HTTP請求。
  • 共享數據庫/文件
    此種方案最簡單,但是一般不建議採用。因爲很容易造成數據庫瓶頸。
發佈了137 篇原創文章 · 獲贊 59 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章