領域
從廣義上來講,領域即是一個組織所做的事情以及其中所包含的一切。一般來講商業機構會確定一個市場,然後在這個市場中銷售產品和服務。每個組織都有它自己的業務範圍和做事方式,這個業務範圍以及在其中所進行的活動就是領域。
子域
由於領域的概念通常都過大,所以我們一般都會將其進行拆分,諸如核心域,通用域,支持域。一般來講核心域就是整個產品的業務價值所在,是一個組織盈利的根本。或者按照業務來拆分,諸如訂單子域,產品子域,物流子域等。
限界上下文
限界上下文簡單來理解就是物理系統。由於微服務的興起,一般來講一個子域很有可能就是對應一個限界上下文。但是在前期業務量不大的情況下,可以採用一個限界上下文跨越多個子域的方式進行集成。
以一個產品零售的例子。領域,子域,限界上下文的概念圖如下
這裏我們可以看出電子商務系統橫跨了產品目錄子域,訂單子域,發票子域,物流子域。隨着業務的發展,我們可能需要將其按照子域拆分,拆分成產品系統,發票系統,訂單系統,物流系統。
如何集成限界上下文
集成限界上下文有很多種方式,常見的如下
- RPC調用
這是最簡單的一種方式,常見的方案如dubbo,spring cloud。只要在一個限界上下文中暴露應用程序編程接口,然後在另外一個限界上下文中調用即可。 - 消息機制
採用觀察者模式,其中一個限界上下文訂閱另外一個限界上下文中的消息,然後異步消費即可。這種集成方案通常會存在延時,但是可以保證最終一致性。 - RESTFul
一個限界上下文向另外一個限界上下文發送請求的方式,如HTTP請求。 - 共享數據庫/文件
此種方案最簡單,但是一般不建議採用。因爲很容易造成數據庫瓶頸。