Dubbo 生態添新兵,Dubbo Admin 釋出 v0.1
為了提升 Dubbo 里程碑版本2.7.0的使用體驗,我們於去年年中啟動了 Dubbo Admin 的重構計劃,並作為Dubbo生態的子專案,於近期釋出了v0.1,重構後的專案在結構上的變化如下:
-
將後端框架從Webx替換成Spring Boot
-
前端採用Vue和Vuetify.js作為開發框架
-
移除Velocity模板
-
整合Swagger,提供API管理功能
當前版本的Dubbo Admin包含了之前版本中的絕大部分功能,例如服務治理和服務查詢等,同時,也支援了Dubbo2.7中服務治理的新特性。
Dubbo Admin作為獨立專案釋出的考慮
Dubbo Admin 控制檯和Dubbo核心功能的耦合度比較低,功能上的差異也比較大,部署的形態以及各自的釋出節奏也不太一樣;Dubbo是作為程序的執行時依賴,而控制檯需要有獨立的Server部署。因此,我們將 Dubbo Admin 作為獨立的專案在社群進行釋出。
配置規範
由於在Dubbo2.7中,配置中心和註冊中心做了分離,並且增加了元資料中心,因此Dubbo Admin的配置方式也做了更新, application.properties
中的配置如下:
admin.registry.address=zookeeper://127.0.0.1:2181 admin.config-center=zookeeper://127.0.0.1:2181 admin.metadata.address=zookeeper://127.0.0.1:2181
也可以和Dubbo2.7一樣,在配置中心指定元資料和註冊中心的地址,以ZooKeeper為例,配置的路徑和內容如下:
# /dubbo/config/dubbo/dubbo.properties dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
配置中心裡的地址會覆蓋掉本地 application.properties
的配置。
功能介紹
功能上,主要延續了之前版本的功能,包括服務查詢和服務治理,2.7版本在服務治理的功能上有了很大的改進,這些改進也大部分都會以Dubbo Admin作為入口來體現。
-
標籤路由
標籤路由是Dubbo2.7引入的新功能,配置以應用作為維度,給不同的伺服器打上不同名字的標籤,配置如下圖所示:
呼叫的時候,客戶端可以通過 setAttachment
的方式,來設定不同的標籤名稱,比如本例中, setAttachment(tag1)
,客戶端的選址範圍就在如圖所示的三臺機器中,可以通過這種方式來實現流量隔離,灰度釋出等功能。
-
應用級別的服務治理
在Dubbo2.6及更早版本中,所有的服務治理規則都只針對服務粒度,如果要把某條規則作用到應用粒度上,需要為應用下的所有服務配合相同的規則,變更,刪除的時候也需要對應的操作,這樣的操作很不友好,因此Dubbo2.7版本中增加了應用粒度的服務治理操作,對於條件路由(包括黑白名單),動態配置(包括權重,負載均衡)都可以做應用級別的配置:
上圖是條件路由的配置,可以按照應用名,服務名兩個維度來填寫,也可以按照這兩個維度來查詢。
條件路由,標籤路由和動態配置都採用了yaml格式的文字編寫,其他的規則配置還是採用了表單的形式。
Dubbo2.6到Dubbo2.7,服務治理髮生了比較大的變化,Dubbo Admin相容兩個版本的用法如下:
a. 對於服務級別的配置,會按照Dubbo2.6(URL)和Dubbo2.7(配置檔案)兩種格式進行寫入,保證Dubbo2.6的客戶端能夠正確讀取,解析規則;
b. 對於應用級別的配置,包括標籤路由,只會按照Dubbo2.7的格式進行寫入,因為Dubbo2.6無此功能,不需要做向前相容;
c. Dubbo Admin只會按照Dubbo2.7的格式進行配置讀取,因此,所有在Dubbo Admin上做的配置都可以被讀到,但是之前遺留的,Dubbo2.6格式的URL無法被讀取;
d. 對於同一個應用或者服務,每種規則只能夠配置一條,否則新的會覆蓋舊的;
-
配置管理
配置管理也是配合Dubbo2.7新增的功能,在Dubbo2.7中,增加了全域性和應用維度的配置
全域性配置裡可以指定註冊中心、元資料中心的地址,服務端和客戶端的超時時間等,這些配置在全域性內生效。除了配置寫入,也可以用來檢視。如果使用ZooKeeper作為註冊中心和元資料中心,還可以看到配置檔案所在位置的目錄結構。
應用級別的配置可以為應用或者應用內的服務指定配置,在服務維度上,需要區分提供者和消費者。 dubbo.reference.{serviceName}
表示作為該服務消費者的配置, dubbo.provider.{servcieName}
表示作為該服務提供者的配置。優先順序服務 > 應用 > 全域性。其中註冊中心和元資料中心的地址,只能在全域性配置中指定,這也是Dubbo2.7中推薦的使用方式。
-
元資料和服務測試
元資料是Dubbo2.7中新引入的元素,主要的使用場景就在Dubbo Admin中,主要體現在服務詳情展示和服務測試這兩個地方:
跟之前版本相比,Dubbo2.7中增加了對服務方法完整簽名的記錄,因此服務詳情中也增加了方法資訊的詳情,可以看到方法名,方法引數列表以及返回值資訊。
更重要的,元資料為服務測試提供了資料基礎,可以在頁面上呼叫真實的服務提供者,方便測試,也不需要為了呼叫服務去搭建一套Dubbo環境以及編寫消費端程式碼。服務測試的詳細使用方式可通過點選下方連線,進行了解。
http://dubbo.apache.org/zh-cn/blog/service-test.html