將系統劃分爲微服務。這是一門藝術,這裏介紹一些策略希望可以幫助大家:
- 通過業務功能分解,並定義與業務功能相對應的服務。
- 使用DDD(域驅動設計方法)設計微服務。
- 由動詞或用例分解系統,並定義負責特定動作的服務。例如,一種負責裝貨運訂單的運輸服務。這裏的“運輸”就可以被用來分解系統,將運輸服務分解成微服務。
- 由名詞或資源來分解系統,分離出某一個服務,這個服務負責對給定類型的名詞實體或者資源實施操作。例如一個負責管理用戶帳戶的帳戶服務。賬戶被用來分解出“賬戶服務”
理想情況下,每個服務都應該只有一小部分責任。設計模式中的SRP(Single Responsibility Principle)適合使用在此處。
另一個有助於服務設計的類比是Unix實用工具的設計。Unix提供了大量實用程序,如grep、cat和find。每個實用程序都做了一件事,通常非常出色,並且可以使用shell腳本與其他實用程序結合使用,以執行復雜的任務。微服務的設計也可以如此。