作者:fredalxin
地址:https://fredal.xin/talking-msa-understand-msa
微服務是什麼
拋去教條性質的解釋,從巨石應用到微服務應用,耦合度是其中最大的變化。或是將多個模塊中重複的部分進行拆分,或是純粹爲了拆分膨脹的單體應用,這些拆分出來的部分獨立成一個服務單獨部署與維護,便是微服務了。
拆分後自然而然會催生出一些必要的需求:
- 從本地方法調用的關係衍變成遠程過程調用的關係,那麼可靠的通信功能是首要的。
- 隨着拆分工作的推進,資源調度關係會變得錯綜複雜,這時候需要完善的服務治理。
- 調用關係網的整體複雜化還會給我們帶來更大的風險,即鏈式反應導致服務雪崩的可能性,所以如何保障服務穩定性也是微服務架構中需要考慮的。
- 這點就不是內需而算是自我演進了,服務化後,如果能結合容器化、Devops技術實現服務運維一體化,將大大降低微服務維護的成本,不管是現在還是將來。
微服務是什麼樣的
從目前常見網站架構的宏觀角度看,微服務處在中間的層次。紅框圈出的部分都屬於微服務的範疇。包括最基礎的rpc框架、註冊中心、配置中心,以及更廣義角度的監控追蹤、治理中心、調度中心等。
從微服務自身角度來看,則大致會包含以下這些模塊:
- 服務註冊與發現
- rpc遠程調用
- 路由與負載均衡
- 服務監控
- 服務治理
服務化的前提
是不是隻要套上微服務框架就算是一個微服務了呢?雖然這樣有了微服務的表,但卻沒有微服務的實質,即”微“。微服務化的前提是服務拆分到足夠”微“,足夠單一職責,當然拆分程度與服務邊界都需要結合業務自行把握。
廣義的服務拆分即包含了應用拆分,也包含了數據拆分。
應用拆分後需要引入微服務框架來進行服務通信與服務治理,這也就是傳統定義上的微服務。
數據拆分後同樣需要引入一系列手段來進行保障,由於不是與微服務強相關的話題,在此只做簡單闡述:
- 分佈式id
- 新表優化
- 數據遷移與數據同步
- sql調用方案改造
- 切庫方案
- 數據一致性
近期熱文推薦:
1.600+ 道 Java面試題及答案整理(2021最新版)
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!
4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!
覺得不錯,別忘了隨手點贊+轉發哦!