微服務中 "微" 到底是什麼?

作者:fredalxin
地址:https://fredal.xin/talking-msa-understand-msa

微服務是什麼

拋去教條性質的解釋,從巨石應用到微服務應用,耦合度是其中最大的變化。或是將多個模塊中重複的部分進行拆分,或是純粹爲了拆分膨脹的單體應用,這些拆分出來的部分獨立成一個服務單獨部署與維護,便是微服務了。

拆分後自然而然會催生出一些必要的需求:

  1. 從本地方法調用的關係衍變成遠程過程調用的關係,那麼可靠的通信功能是首要的。
  2. 隨着拆分工作的推進,資源調度關係會變得錯綜複雜,這時候需要完善的服務治理。
  3. 調用關係網的整體複雜化還會給我們帶來更大的風險,即鏈式反應導致服務雪崩的可能性,所以如何保障服務穩定性也是微服務架構中需要考慮的。
  4. 這點就不是內需而算是自我演進了,服務化後,如果能結合容器化、Devops技術實現服務運維一體化,將大大降低微服務維護的成本,不管是現在還是將來。

微服務是什麼樣的

從目前常見網站架構的宏觀角度看,微服務處在中間的層次。紅框圈出的部分都屬於微服務的範疇。包括最基礎的rpc框架、註冊中心、配置中心,以及更廣義角度的監控追蹤、治理中心、調度中心等。

從微服務自身角度來看,則大致會包含以下這些模塊:

  • 服務註冊與發現
  • rpc遠程調用
  • 路由與負載均衡
  • 服務監控
  • 服務治理

服務化的前提

是不是隻要套上微服務框架就算是一個微服務了呢?雖然這樣有了微服務的表,但卻沒有微服務的實質,即”微“。微服務化的前提是服務拆分到足夠”微“,足夠單一職責,當然拆分程度與服務邊界都需要結合業務自行把握。

廣義的服務拆分即包含了應用拆分,也包含了數據拆分。

應用拆分後需要引入微服務框架來進行服務通信與服務治理,這也就是傳統定義上的微服務。

數據拆分後同樣需要引入一系列手段來進行保障,由於不是與微服務強相關的話題,在此只做簡單闡述:

  • 分佈式id
  • 新表優化
  • 數據遷移與數據同步
  • sql調用方案改造
  • 切庫方案
  • 數據一致性

近期熱文推薦:

1.600+ 道 Java面試題及答案整理(2021最新版)

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章