Dubbo-Admin 功能展示與實操解析

阿里巴巴雲原生發表於2021-12-27

服務資訊

服務列表以介面為維度展示出所提供的服務資訊,並按照註冊來源介面級/應用級進行區分。

服務詳情頁面展示介面的提供者與消費者資訊和介面的方法等資訊。

動態路由

條件路由

條件路由可以編寫一些自定義路由規則實現一些服務治理的需求比如黑白名單、讀寫分離等。條件路由可以在介面級別和消費者應用級別建立規則。

建立條件路由規則需要填寫 interface、version、group 資訊(version、group無則不填),下圖展示一個簡單的黑名單配置,=> 左邊代表消費者匹配條件,右邊代表provider匹配條件(無代表沒有匹配)具體規則詳情參考官網(具體請見文末相關連結)。所以配置的含義為consumer ip 為 192.168.1.3 的消費者沒有 provider 提供服務。

標籤路由

標籤路由通過將某一個或多個服務的提供者劃分到同一個分組,約束流量只在指定分組中流轉,從而實現流量隔離的目的,可以作為藍綠髮布、灰度釋出等場景的能力基礎。在 provider 應用級別上建立規則,對於的靜態打標為:

dubbo.provider.tag=tag1
@DubboService(tag = "tag2")

Mesh 路由

Mesh 路由是 3.0 版本推出的新的流量管理策略,支援更多的條件匹配和組合可以輕鬆實現各種路由功能。將整個流量管理分成 VirtualService 和 DestinationRule 兩部分,VirtualService 匹配入口流量,DestinationRule 匹配出口流量。詳細規則參考文件(具體請見文末相關連結)。

案例

一個介面 org.test.apache.dubbo.interfaces.HelloService#hi(Integer number) 引數 number 為 Integer 型別,下述規則表示當 number 為偶數匹配 label 為 v1 的 provider (即 url 引數帶有 test-version = v1 的服務),當為奇數匹配 label 為 v2 的 provider (即 url 引數帶有 test-version = v2 的服務),可以通過 dubbo.application.parameters.test-version = v1 給服務打標,實現一個簡單的灰度功能。

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

動態配置

動態配置提供了無須重啟可以動態調整 RPC 呼叫行為的一種能力。比如修改超時時間、權重、負載均衡策略調整等。作用在介面級別和應用級別。下圖含義為將超時時間調整為 6000ms,作用在 conusmer 側的所有節點。

服務測試

可以通過 admin 後臺測試 dubbo 服務,引數根據後設資料內容自動生成 JSON 模板。

服務 Mock

通過在Admin後臺進行規則配置,根據服務名和方法名,進行規則的配置。

使用者在 Dubbo 引用中引入 Mock 的依賴,通過新增 JVM 啟動引數 -Denable.dubbo.admin.mock=true,即可體驗在無 Provider 的情況下,實現 Consumer 對 Provider 的模擬呼叫,返回來自 admin 中配置的模擬資料。

<denpendency>
    <groupId>org.apache.dubbo.extensions</groupId>
    <artifactId>dubbo-mock-admin</artifactId>
    <version>last</version>
</denpendency>

新增功能

  • 應用級服務發現
  • Mesh 路由
  • 服務 Mock
  • 許可權 SPI 擴充

相關連結

1)官網:

https://dubbo.apache.org/zh/docs/advanced/routing-rule/

2)文件:

https://dubbo.apache.org/zh/docs/concepts/traffic-management/

相關文章