MSE 是什麽
微服務引擎 MSE(Microservice Engine)是一個面向業界主流開源微服務框架 Spring Cloud 和 Dubbo 的一站式微服務平台。其由四個主要部分組成:微服務治理中心、微服務注冊中心、微服務配置中心、微服務網關。先從一些關鍵詞了解下各個組件的特性:
- 微服務治理中心:無侵入增強主流開源微服務框架,豐富的服務治理功能
- 微服務注冊中心/配置中心:全托管,高可用,豐富完善的監控報警,豐富的控制台運維操作,引擎類型豐富
- 微服務網關:全托管,支持主流開源微服務網關
作爲 MSE 産品組的組件,每個部分都是可插拔的,即可單獨使用微服務治理中心,也可單獨使用其他組件。當然,如果選擇使用全部的 MSE 組件,你將會獲得微服務生態的最佳實踐。
MSE 發展曆史
MSE 在 2019 年 7 月正式上線,最早僅支持 Zookeeper 微服務注冊中心,經曆了數月的公測期,在 2020 年 1 月正式商業化,新增支持了兩個注冊中心類型 Nacos 和 Eureka。商業化之後,MSE 主要的産品演進方向包含了以下幾個方面:
- Region 開服。MSE 先後完成了國內 5 大 Region(杭州、上海、張家口、北京、深圳)以及國外三個 Region (弗吉尼亞、新加坡、俄羅斯)的開服,未來 MSE 將會做到全球開服。
- 産品形態拓寬。2020 年 6 月,MSE 引入微服務治理中心,該組件通過無侵入的方式,爲 Spring Cloud 和 Dubbo 等主流微服務框架提供了能力增強,如服務鑒權、無損下線、標簽路由、服務測試;2020 年 7 月支持了 Nacos 配置中心,用戶只需申請 1.2.1 版本的 Nacos 即可同時獲得注冊中心和配置中心的能力;2020 年 8 月,MSE 引入微服務網關,提供全托管的 Zuul、Kong、Spring Cloud Gateway。
- 産品能力演進。目前 MSE 還處于高速發展時期,幾乎每個月份都有較大功能的上線,並對已有特性進行增強,如微服務治理中心現已支持 ECS、ACK 等産品形式的接入,支持 SpringCloud 和 Dubbo 微服務框架類型的治理;MSE Zookeeper 提供開源欠缺的管控能力,提供了可視化編輯能力,節點監控能力。
提到微服務,人們最容易聯想的詞可能有這些:服務發現、服務治理、路由,而這些微服務的概念,恰巧與 MSE 的各個組成部分對應,下面我會對這些組件逐個進行介紹。
MSE 注冊中心&配置中心
服務發現這個詞由來已久,DNS + LVS + Nginx 這樣的架構其實就是最早期的服務發現,那時候微服務這個詞可能都還沒有開始流行,隨著 Dubbo 和 SpringCloud 在國內遍地開花,微服務這個詞開始變得火爆起來,與此同時,微服務開發者們也將服務發現這一概念與 Zookeeper,Eureka、Nacos、Consul、Etcd 綁定了起來。
回過頭來看,Zookeeper 的設計者可能壓根沒有想到其竟然對微服務架構産生了如此深厚的影響,單從 Zookeeper 這款産品本身出發,將其稱之爲分布式協調組件可能更爲恰當。這很大程度跟 Dubbo 在國內的普及程度相關,那時候 SpringCloud + Eureka 還沒有橫空出世,K8s + Etcd 更是鮮爲人知,可以說 Dubbo + Zookeeper 的經典組合,幾乎是國內最早落地微服務的一套解決方案。隨著時間推移,越來越多的人表現出了對微服務的青睐,也有很多公司遇到一些瓶頸,其中一部分瓶頸就發生在 Zookeeper 之上,這時,一些變化已經悄然發生了。時間來到 2018 年,阿裏將內部自用的注冊中心開源了出來,提供給了用戶一個新的選擇,這便是今天的 Nacos。當越來越多的同類産品出現在人們面前時,好的一面表現爲系統的選擇變多了,壞的一面也表現爲選擇變多了,架構師紛紛表示:從前我沒得選,現在我只想用一個好的注冊中心。限于篇幅,我們不在這裏探討各個注冊中心孰優孰劣,但可以確定的是:主流的注冊中心,MSE 都支持。
MSE 基于對使用者的調研和目前微服務的發展方向,爲阿裏雲用戶提供了 Zookeeper、Nacos 和 Eureka 的托管。相比開源 Zookeeper/Nacos/Eureka,MSE 使用起來有什麽差異呢?首先需要給開發者打的一劑強心劑是,MSE 的各個引擎類型是可以無縫對接開源的,功能上一定是開源的超集,所以可以使用開源 SDK 直接調用對應的引擎的接口。相比開源産品,MSE 的差異化增強能力主要體現在全托管,高可用,豐富的監控報警,完善的可視化管控能力。
以 MSE Zookeeper 爲例,【數據管理】功能中可以對 Znode 節點進行可視化的編輯,彌補了開源 Zookeeper 沒有控制台的空白。
【監控】功能可以對引擎本身的相關指標進行監控,MSE Zookeeper 目前支持連接數、TPS/QPS、Znode 數量、請求排隊數和平均請求耗時指標的監控,並且在【報警管理策略】中配置報警。
MSE 的高可用保障策略分爲幾方面,一方面需要用戶購買集群時,選擇 3 節點及以上的集群,這樣有利于注冊中心的一致性協議選主。另一方面,依托于 MSE 底層的 K8s 架構,保障節點一直以固定數量運行,並且,MSE 會自動將集群的不同節點分布在不同可用區,進一步保障可用性。
我們前面提到 Zookeeper 設計之初並不是用來做注冊中心的,而 Nacos 則專門爲微服務場景設計的,其包含了服務和配置兩個領域模型。如果用戶選擇了 MSE Nacos 引擎,也會獲得配置中心的能力。
MSE 治理中心
國內外大大小小的微服務框架可以說數不勝數,但提到微服務治理,就拿最簡單的服務查詢,治理規則編輯功能來說,鮮有微服務框架能夠提供。Apache Dubbo 算是衆多微服務框架中比較出衆的一個,其配套了開源的 Dubbo Admin,提供了服務查詢,路由規則的配置,服務測試等能力,但硬要說其缺點,也確實是存在的,例如 Apache Dubbo 的能力不斷再演進,但 Dubbo Admin 沒有跟上節奏。MSE 治理中心主要解決的問題便是爲微服務提供治理能力,而這些能力並不受你使用的微服務框架類型所限制。
在很長一段時間裏,雲上用戶在微服務架構選型時,面臨了一個難題:選擇一個雲廠商等于選擇了一套微服務架構。站在雲廠商的角度,固定一套 SDK,顯然對雲産品開發而言是有優勢的,大大降低了服務治理的開發難度;但從用戶角度來看,這限制了用戶的選擇空間,特別是在上雲之前就有了微服務基礎的團隊,最壞的可能性就是搬棧。爲了避免綁定,MSE 治理中心所有的微服務治理能力都是無侵入式實現的,即不需要用戶修改一行代碼就可以獲得我們功能列表裏面的那些能力。MSE 治理中心仍然在公測階段,如果你使用的是 Dubbo 和 SpringCloud,那恭喜你,不僅僅是代碼不用改,一分錢也不用花就可以接入,免費使用服務查詢、服務測試、金絲雀發布和無損下線等能力。
【服務查詢】可以將應用的服務信息,接口信息細粒度的展示出來。
【標簽路由】可支持應用實現灰度發布。
【服務測試】支持用戶在開發階段對 Dubbo 和 SpringCloud 接口進行測試,解決手動編寫測試代碼的問題。
微服務網關
微服務網關是一個處于微服務之前的系統,作爲微服務環境面向外部服務訪問者的唯一入口,用來管理授權、訪問控制和流量路由等,這樣服務就被網關保護起來,對所有的調用者透明。因此,隱藏在網關後面的業務系統就可以專注于創建和管理服務,而不用去處理這些策略性的基礎設施。
微服務網關與微服務體系無縫協作、快捷發布、靈活控制,將基于微服務架構的業務應用服務快速、直接發布成 API。基于注冊中心動態感知服務節點狀態,靈活進行路由、限流、鑒權、負載均衡等各種控制策略,即時更改即時生效,與治理中心的各種服務治理能力無縫集成。
微服務網關目前支持 Zuul、Kong 和 Spring Cloud Gateway 的托管。
本文爲阿裏雲原創內容,未經允許不得轉載。