《微服務設計》,Building Microservices,作者Sam Newman,譯者崔力強、張駿,人民郵電出版社,2016年。
筆記中有些內容直接引用原書。
================================================================
第三章 如何建模服務
好的服務是松耦合和高內聚的。這兩個詞在很多地方都用到了,那么在微服務中分別指什么呢?松耦合指的是服務之間耦合度低,修改一個服務不用導致另一個服務跟著修改。高內聚指的是服務內部,相關的行為都聚集在一個服務里,而不是分散在不同服務中,這樣需要修改一個行為時,只要修改一個微服務即可。
限界上下文(bounded context)來自Eric Evans的《領域驅動設計》一書,用來對現實世界領域進行建模。作者比較認同的對該詞比較好的定義是“一個由顯式邊界限定的特定職責”。顯示邊界是外部與它交互的必經之路。
要能找到限界上下文之間的共享模型,其內部和外部的表現形式往往是不一樣的。應該共享特定的模型,而不是共享表示,從而避免緊耦合。
單塊系統中的模塊可以較好地轉化為微服務。不要過早地劃分微服務,要等到服務邊界清晰以后再進行。
對微服務建模時,要首先考慮其業務功能,再考慮其數據。如果只考慮數據,則常常建模為CRUD這種貧血服務。
根據業務邊界,結合組織結構,由粗粒度到細粒度地逐步劃分限界上下文。