摘要
微服務(wù)引擎(Micro Service Engine后面簡稱 MSE
)是面向業(yè)界主流開源微服務(wù)生態(tài)的一站式微服務(wù)治理平臺熔掺,兼容 Spring Cloud
、Dubbo
微服務(wù)框架僧家,提供高可用笆搓、免運維的服務(wù)注冊中心(支持 Eureka
/ Nacos
/ ZooKeeper
)实愚、配置中心(支持 Apollo
)和監(jiān)控中心(支持 Skywalking
),實現(xiàn)對微服務(wù)的治理和監(jiān)控畸写。
基于云原生環(huán)境下驮瞧,微服務(wù)引擎又是如何一種架構(gòu)?
微服務(wù)引擎產(chǎn)品中 Spring Cloud
及 Dubbo
相關(guān)服務(wù)治理是如何實現(xiàn)的枯芬?
Spring Cloud
框架下如何實現(xiàn)參數(shù)的動態(tài)配置呢论笔?
前言
在云原生主流發(fā)展的環(huán)境下,基于需求而來千所,一種應(yīng)云而生的微服務(wù)引擎架構(gòu)翅楼,顯然是脫穎而出,得到業(yè)界的普遍關(guān)注真慢。服務(wù)治理毅臊,對于 Srping Cloud
類型的服務(wù)和 Dubbo
類型的服務(wù),本文也給出了不同的設(shè)計方案。而針對常用的 Srping Cloud
類型的服務(wù)管嬉,做了詳細(xì)的服務(wù)治理剖析皂林,以及通過具體的案例解析相應(yīng)的治理過程。
MSE部署組網(wǎng)架構(gòu)實現(xiàn)
MSE
采用 nginx 網(wǎng)關(guān)作為流量入口蚯撩,統(tǒng)一轉(zhuǎn)發(fā)路由到各個服務(wù)础倍;應(yīng)用端面向 op 用戶,訪問請求經(jīng) op 網(wǎng)關(guān)進行統(tǒng)一管理胎挎。
具體的部署組網(wǎng)架構(gòu)圖如下:
Dubbo服務(wù)治理
Dubbo
服務(wù)的治理沟启,社區(qū)提供的治理方案是自由編輯 yaml 格式的參數(shù)配置,然后將配置信息寫入到注冊中心 zookeeper
的配置節(jié)點上犹菇。微服務(wù)引擎在設(shè)計時德迹,首選推薦的圖形化方式引導(dǎo)選擇或輸入的方式,同時也保留了自由編輯yaml格式的參數(shù)配置的方式揭芍。
Dubbo
服務(wù)治理的配置都存儲在 /dubbo/config
節(jié)點胳搞,具體節(jié)點結(jié)構(gòu)圖如下:
- namespace,用于不同配置的環(huán)境隔離称杨。
-
config
肌毅,Dubbo
約定的固定節(jié)點,不可更改姑原,所有配置和服務(wù)治理規(guī)則都存儲在此節(jié)點(/dubbo/config
)下悬而。 -
dubbo/application
,分別用來隔離全局配置锭汛、應(yīng)用級別配置:dubbo 是默認(rèn) group 值笨奠,application 對應(yīng)應(yīng)用名 -
dubbo.properties
,此節(jié)點的node value存儲具體配置內(nèi)容
通過可視化配置可以實現(xiàn)Dubbo
服務(wù)的負(fù)載均衡店乐、條件路由艰躺、標(biāo)簽路由、黑白名單策略眨八。
- 負(fù)載均衡:在集群負(fù)載均衡時腺兴,
Dubbo
提供了多種均衡策略,缺省為隨機調(diào)用廉侧。隨機页响,輪詢,最少活躍調(diào)用數(shù)段誊。 - 條件路由:以服務(wù)或消費者應(yīng)用為粒度配置路由規(guī)則闰蚕。 例如:設(shè)置應(yīng)用名為 app1 的消費者只能調(diào)用端口為
20880
的服務(wù)實例,設(shè)置samples.governance.api.DemoService
的 sayHello 方法只能調(diào)用所有端口為 20880 的服務(wù)實例连舍。 - 標(biāo)簽路由:通過將某一個或多個服務(wù)的提供者劃分到同一個分組没陡,約束流量只在指定分組中流轉(zhuǎn),從而實現(xiàn)流量隔離的目的,可以作為藍綠發(fā)布盼玄、灰度發(fā)布等場景的能力基礎(chǔ)贴彼。
- 黑白名單:是條件路由的一部分,規(guī)則存儲和條件路由放在一起埃儿,為了方便配置所以單獨拿出來器仗,可以對某一個服務(wù),指定黑名單和白名單童番。
Srping Cloud服務(wù)治理
通過可視化配置可以實現(xiàn) Spring Cloud
服務(wù)的負(fù)載均衡精钮、限流、熔斷剃斧、降級轨香、超時策略以及參數(shù)的動態(tài)化配置,通過 BOMS 管理平臺悯衬,負(fù)責(zé)接收用戶請求弹沽,將用戶數(shù)據(jù)持久化到存儲介質(zhì)檀夹;存儲介質(zhì)用來存儲用戶操作數(shù)據(jù)筋粗,例如項目負(fù)載均衡策略;在使用上述治理功能時炸渡,依賴于 Apollo 的參數(shù)動態(tài)生效功能以及自研的 SDK 負(fù)責(zé)監(jiān)聽存儲介質(zhì)娜亿,動態(tài)更新負(fù)載均衡策略,存儲介質(zhì)基于 Apollo 根據(jù)存儲介質(zhì)中訪問控制策略蚌堵,增加訪問控制攔截負(fù)責(zé)監(jiān)聽存儲介質(zhì)买决,動態(tài)更新是否啟用容錯重試機制,以及動態(tài)更新重試次數(shù)等功能吼畏;后面章節(jié)會從 Apollo 的參數(shù)動態(tài)生效以及 SDK 兩方面詳細(xì)介紹微服務(wù)引擎時如何納管 Springcloud
服務(wù)實現(xiàn)流量治理過程洞翩。
如果用戶的微服務(wù)需要通過 MSE 納管進行流量治理磕谅,首先需要在mse里訂購注冊中心及配置中心 Apollo 實例,然后對用戶的服務(wù)進行部分改造,引入SDK工具包捆姜,并且在服務(wù)的配置文件里需要配置 Apollo 的 meta 地址以及 Apollo 的 namespaces:
application
, circuit-breaker
, fault-tolerant
, loadbalance
, timeout
,
這五個 namespace 分別對應(yīng)五種治理功能:參數(shù)動態(tài)配置
留拾、熔斷降級
涕侈、容錯
、負(fù)載均衡
秒旋、超時策略
约计。
下圖是Spring Cloud服務(wù)治理結(jié)構(gòu)圖: