Dubbo-Admin 功能展示與實操解析
服務(wù)信息
服務(wù)列表以接口為維度展示出所提供的服務(wù)信息,并按照注冊來源接口級/應(yīng)用級進行區(qū)分。
服務(wù)詳情頁面展示接口的提供者與消費者信息和接口的方法等信息。
動態(tài)路由
條件路由
條件路由可以編寫一些自定義路由規(guī)則實現(xiàn)一些服務(wù)治理的需求比如黑白名單、讀寫分離等。條件路由可以在接口級別和消費者應(yīng)用級別創(chuàng)建規(guī)則。
創(chuàng)建條件路由規(guī)則需要填寫 interface、version、group 信息(version、group無則不填),下圖展示一個簡單的黑名單配置,=> 左邊代表消費者匹配條件,右邊代表provider匹配條件(無代表沒有匹配)具體規(guī)則詳情參考官網(wǎng)(具體請見文末相關(guān)鏈接)。所以配置的含義為consumer ip 為 192.168.1.3 的消費者沒有 provider 提供服務(wù)。
標簽路由
標簽路由通過將某一個或多個服務(wù)的提供者劃分到同一個分組,約束流量只在指定分組中流轉(zhuǎn),從而實現(xiàn)流量隔離的目的,可以作為藍綠發(fā)布、灰度發(fā)布等場景的能力基礎(chǔ)。在 provider 應(yīng)用級別上創(chuàng)建規(guī)則,對于的靜態(tài)打標為:
dubbo.provider.tag=tag1
@DubboService(tag = "tag2")
Mesh 路由
Mesh 路由是 3.0 版本推出的新的流量管理策略,支持更多的條件匹配和組合可以輕松實現(xiàn)各種路由功能。將整個流量管理分成 VirtualService 和 DestinationRule 兩部分,VirtualService 匹配入口流量,DestinationRule 匹配出口流量。詳細規(guī)則參考文檔(具體請見文末相關(guān)鏈接)。
案例
一個接口 org.test.apache.dubbo.interfaces.HelloService#hi(Integer number) 參數(shù) number 為 Integer 類型,下述規(guī)則表示當 number 為偶數(shù)匹配 label 為 v1 的 provider (即 url 參數(shù)帶有 test-version = v1 的服務(wù)),當為奇數(shù)匹配 label 為 v2 的 provider (即 url 參數(shù)帶有 test-version = v2 的服務(wù)),可以通過 dubbo.application.parameters.test-version = v1 給服務(wù)打標,實現(xiàn)一個簡單的灰度功能。
apiVersion: service.dubbo.apache.org/v1alpha1 kind: VirtualService metadata: name: demo/oddEvenRouter spec: dubbo: - routedetail: - match: - method: argc: 1 args: - index: 0 num_value: oneof: - exact: 0.0 mod: 2.0 type: int name_match: exact: hi name: even-route route: - destination: host: demo subset: v1 - match: - method: argc: 1 args: - index: 0 num_value: oneof: - exact: 1.0 mod: 2.0 type: int name_match: exact: hi name: odd-route route: - destination: host: demo2 subset: v2 services: - exact: org.test.apache.dubbo.interfaces.HelloService --- apiVersion: service.dubbo.apache.org/v1alpha1 kind: DestinationRule metadata: name: test-route spec: host: demo subsets: - name: v1 labels: test-version: v1 - name: v2 labels: test-version: v2
動態(tài)配置
動態(tài)配置提供了無須重啟可以動態(tài)調(diào)整 RPC 調(diào)用行為的一種能力。比如修改超時時間、權(quán)重、負載均衡策略調(diào)整等。作用在接口級別和應(yīng)用級別。下圖含義為將超時時間調(diào)整為 6000ms,作用在 conusmer 側(cè)的所有節(jié)點。
服務(wù)測試
可以通過 admin 后臺測試 dubbo 服務(wù),參數(shù)根據(jù)元數(shù)據(jù)內(nèi)容自動生成 JSON 模板。
服務(wù) Mock
通過在Admin后臺進行規(guī)則配置,根據(jù)服務(wù)名和方法名,進行規(guī)則的配置。
用戶在 Dubbo 引用中引入 Mock 的依賴,通過添加 JVM 啟動參數(shù) -Denable.dubbo.admin.mock=true,即可體驗在無 Provider 的情況下,實現(xiàn) Consumer 對 Provider 的模擬調(diào)用,返回來自 admin 中配置的模擬數(shù)據(jù)。
org.apache.dubbo.extensions dubbo-mock-admin last
新增功能
- 應(yīng)用級服務(wù)發(fā)現(xiàn)
- Mesh 路由
- 服務(wù) Mock
- 權(quán)限 SPI 拓展