一種微服務(wù)引擎(MSE)架構(gòu)剖析及服務(wù)治理原理介紹

摘要

微服務(wù)引擎(Micro Service Engine后面簡(jiǎn)稱 MSE)是面向業(yè)界主流開源微服務(wù)生態(tài)的一站式微服務(wù)治理平臺(tái),兼容 Spring Cloud、Dubbo 微服務(wù)框架,提供高可用、免運(yùn)維的服務(wù)注冊(cè)中心(支持 Eureka / Nacos / ZooKeeper)、配置中心(支持 Apollo)和監(jiān)控中心(支持 Skywalking ),實(shí)現(xiàn)對(duì)微服務(wù)的治理和監(jiān)控。

基于云原生環(huán)境下,微服務(wù)引擎又是如何一種架構(gòu)?
微服務(wù)引擎產(chǎn)品中 Spring CloudDubbo 相關(guān)服務(wù)治理是如何實(shí)現(xiàn)的?
Spring Cloud 框架下如何實(shí)現(xiàn)參數(shù)的動(dòng)態(tài)配置呢?

前言

在云原生主流發(fā)展的環(huán)境下,基于需求而來,一種應(yīng)云而生的微服務(wù)引擎架構(gòu),顯然是脫穎而出,得到業(yè)界的普遍關(guān)注。服務(wù)治理,對(duì)于 Srping Cloud 類型的服務(wù)和 Dubbo 類型的服務(wù),本文也給出了不同的設(shè)計(jì)方案。而針對(duì)常用的 Srping Cloud 類型的服務(wù),做了詳細(xì)的服務(wù)治理剖析,以及通過具體的案例解析相應(yīng)的治理過程。

MSE部署組網(wǎng)架構(gòu)實(shí)現(xiàn)

MSE 采用 nginx 網(wǎng)關(guān)作為流量入口,統(tǒng)一轉(zhuǎn)發(fā)路由到各個(gè)服務(wù);應(yīng)用端面向 op 用戶,訪問請(qǐng)求經(jīng) op 網(wǎng)關(guān)進(jìn)行統(tǒng)一管理。

具體的部署組網(wǎng)架構(gòu)圖如下:


image.png

Dubbo服務(wù)治理

Dubbo服務(wù)的治理,社區(qū)提供的治理方案是自由編輯 yaml 格式的參數(shù)配置,然后將配置信息寫入到注冊(cè)中心 zookeeper 的配置節(jié)點(diǎn)上。微服務(wù)引擎在設(shè)計(jì)時(shí),首選推薦的圖形化方式引導(dǎo)選擇或輸入的方式,同時(shí)也保留了自由編輯yaml格式的參數(shù)配置的方式。

Dubbo 服務(wù)治理的配置都存儲(chǔ)在 /dubbo/config 節(jié)點(diǎn),具體節(jié)點(diǎn)結(jié)構(gòu)圖如下:

image.png

  • namespace,用于不同配置的環(huán)境隔離。
  • configDubbo 約定的固定節(jié)點(diǎn),不可更改,所有配置和服務(wù)治理規(guī)則都存儲(chǔ)在此節(jié)點(diǎn)( /dubbo/config )下。
  • dubbo/application,分別用來隔離全局配置、應(yīng)用級(jí)別配置:dubbo 是默認(rèn) group 值,application 對(duì)應(yīng)應(yīng)用名
  • dubbo.properties,此節(jié)點(diǎn)的node value存儲(chǔ)具體配置內(nèi)容

通過可視化配置可以實(shí)現(xiàn)Dubbo 服務(wù)的負(fù)載均衡、條件路由、標(biāo)簽路由、黑白名單策略。

  1. 負(fù)載均衡:在集群負(fù)載均衡時(shí),Dubbo 提供了多種均衡策略,缺省為隨機(jī)調(diào)用。隨機(jī),輪詢,最少活躍調(diào)用數(shù)。
  2. 條件路由:以服務(wù)或消費(fèi)者應(yīng)用為粒度配置路由規(guī)則。 例如:設(shè)置應(yīng)用名為 app1 的消費(fèi)者只能調(diào)用端口為 20880 的服務(wù)實(shí)例,設(shè)置 samples.governance.api.DemoService 的 sayHello 方法只能調(diào)用所有端口為 20880 的服務(wù)實(shí)例。
  3. 標(biāo)簽路由:通過將某一個(gè)或多個(gè)服務(wù)的提供者劃分到同一個(gè)分組,約束流量只在指定分組中流轉(zhuǎn),從而實(shí)現(xiàn)流量隔離的目的,可以作為藍(lán)綠發(fā)布、灰度發(fā)布等場(chǎng)景的能力基礎(chǔ)。
  4. 黑白名單:是條件路由的一部分,規(guī)則存儲(chǔ)和條件路由放在一起,為了方便配置所以單獨(dú)拿出來,可以對(duì)某一個(gè)服務(wù),指定黑名單和白名單。

Srping Cloud服務(wù)治理

通過可視化配置可以實(shí)現(xiàn) Spring Cloud 服務(wù)的負(fù)載均衡、限流、熔斷、降級(jí)、超時(shí)策略以及參數(shù)的動(dòng)態(tài)化配置,通過 BOMS 管理平臺(tái),負(fù)責(zé)接收用戶請(qǐng)求,將用戶數(shù)據(jù)持久化到存儲(chǔ)介質(zhì);存儲(chǔ)介質(zhì)用來存儲(chǔ)用戶操作數(shù)據(jù),例如項(xiàng)目負(fù)載均衡策略;在使用上述治理功能時(shí),依賴于 Apollo 的參數(shù)動(dòng)態(tài)生效功能以及自研的 SDK 負(fù)責(zé)監(jiān)聽存儲(chǔ)介質(zhì),動(dòng)態(tài)更新負(fù)載均衡策略,存儲(chǔ)介質(zhì)基于 Apollo 根據(jù)存儲(chǔ)介質(zhì)中訪問控制策略,增加訪問控制攔截負(fù)責(zé)監(jiān)聽存儲(chǔ)介質(zhì),動(dòng)態(tài)更新是否啟用容錯(cuò)重試機(jī)制,以及動(dòng)態(tài)更新重試次數(shù)等功能;后面章節(jié)會(huì)從 Apollo 的參數(shù)動(dòng)態(tài)生效以及 SDK 兩方面詳細(xì)介紹微服務(wù)引擎時(shí)如何納管 Springcloud服務(wù)實(shí)現(xiàn)流量治理過程。

如果用戶的微服務(wù)需要通過 MSE 納管進(jìn)行流量治理,首先需要在mse里訂購(gòu)注冊(cè)中心及配置中心 Apollo 實(shí)例,然后對(duì)用戶的服務(wù)進(jìn)行部分改造,引入SDK工具包,并且在服務(wù)的配置文件里需要配置 Apollo 的 meta 地址以及 Apollo 的 namespaces:

application, circuit-breaker, fault-tolerant, loadbalance, timeout,
這五個(gè) namespace 分別對(duì)應(yīng)五種治理功能:參數(shù)動(dòng)態(tài)配置熔斷降級(jí)、容錯(cuò)、負(fù)載均衡、超時(shí)策略。

下圖是Spring Cloud服務(wù)治理結(jié)構(gòu)圖:

還有 78% 的精彩內(nèi)容
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
支付 ¥7.99 繼續(xù)閱讀

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容