- 中臺落地手記:業務服務化與數據資產化
- 張亮
- 607字
- 2021-09-08 16:35:26
第3章 微服務解決方案
服務化有很多的實現方式,早期的SOA方式因為水平拆分顯得太臃腫、ESB服務總線過于重量級、技術棧固定等問題,在微服務流行后很快就被淘汰出了主流方案。當然,微服務也可以看成是當前服務化發展過程中的一個高級形式,其大部分的建設思路都是從前文中的服務化思路演進而來的。
DDD的系統設計方法正好可以解決微服務邊界確定難的問題,微服務就是DDD設計方法最好的落地實踐。中臺的業務部分需要的是全域共享復用,正好與微服務的領域建模相契合,進而業務中臺的建設自然可以使用微服務來實現。
微服務平臺建立的難點在于微服務的拆分,單體應用服務拼裝成的微服務不能發揮微服務的真正優勢,這也是本書認為微服務是服務化進程的高級形式的原因。單體拼裝顯得單體過于獨立,而微服務強調的是物理相對分離、邏輯相對不分離。
從業務單元角度來看,DDD中的一個聚合可以構成一個最小粒度的微服務,但在系統建設初期,本著“能不分就不分”“盡量少拆分”的原則,應該以一個限界上下文作為分隔微服務的“黃金標準”。當然,理想的情況是一次性分拆到位,一個子域對應一個限界上下文,這個限界上下文中只有一個聚合。但是業務往往是復雜多變的,微服務拆分很少能夠一次就拆分到位,在系統演進的過程中,微服務也是不斷進行調整的,不過這個調整的次數當然是越少越好。
主流的基于Java語言的微服務技術架構基本上呈現出了平分天下的態勢,一個是基于原生RPC框架的Apache Dubbo生態,另一個是依托Spring框架的Spring Cloud生態。