Dubbo 代理

Dubbo 代理过滤器对 Dubbo 客户端和服务器之间的 RPC 协议进行解码。解码后的 RPC 信息被转换为元数据。元数据包括基本请求 ID、请求类型、序列化类型以及用于路由所需的 serviceName、methodName、参数名称和参数值。

  • 此过滤器应使用类型 URL type.googleapis.com/envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy 配置。

  • v3 API 参考

统计数据

每个配置的 Dubbo 代理过滤器都有统计数据,这些统计数据以 dubbo.<stat_prefix>. 为根,并包含以下统计数据:

名称

类型

描述

request

计数器

总请求数

request_twoway

计数器

总双向请求数

request_oneway

计数器

总单向请求数

request_event

计数器

总事件请求数

request_decoding_error

计数器

总解码错误请求数

request_decoding_success

计数器

总解码成功请求数

request_active

规范

总活动请求数

response

计数器

总响应数

response_success

计数器

总成功响应数

response_error

计数器

协议解析错误的总响应数

response_error_caused_connection_close

计数器

由下游连接关闭导致的总响应数

response_business_exception

计数器

协议包含业务层返回的异常信息的总响应数

response_decoding_error

计数器

总解码错误响应数

response_decoding_success

计数器

总解码成功响应数

response_error

计数器

协议解析错误的总响应数

local_response_success

计数器

总本地响应数

local_response_error

计数器

编码错误的总本地响应数

local_response_business_exception

计数器

协议包含业务异常的总本地响应数

cx_destroy_local_with_active_rq

计数器

在本地销毁的具有活动查询的连接

cx_destroy_remote_with_active_rq

计数器

在远程销毁的具有活动查询的连接

基于 Dubbo 代理过滤器实现自定义过滤器

如果您想实现基于 Dubbo 协议的自定义过滤器,Dubbo 代理过滤器就像 HTTP 一样,提供了一种非常方便的扩展方法,第一步是实现 DecoderFilter 接口,并为过滤器命名,例如 testFilter,第二步是添加您的配置,配置方法参考以下示例

filter_chains:
- filters:
  - name: envoy.filters.network.dubbo_proxy
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy
      stat_prefix: dubbo_incomming_stats
      protocol_type: Dubbo
      serialization_type: Hessian2
      multiple_route_config:
        name: local_route
        route_config:
        - interface: org.apache.dubbo.demo.DemoService
          routes:
          - match:
              method:
                name:
                  exact: sayHello
            route:
              cluster: user_service_dubbo_server
      dubbo_filters:
      - name: envoy.filters.dubbo.testFilter
        typed_config:
          "@type": type.googleapis.com/google.protobuf.Struct
          value:
            name: test_service
      - name: envoy.filters.dubbo.router