Dubbo 代理
Dubbo 代理过滤器对 Dubbo 客户端和服务器之间的 RPC 协议进行解码。解码后的 RPC 信息被转换为元数据。元数据包括基本请求 ID、请求类型、序列化类型以及用于路由所需的 serviceName、methodName、参数名称和参数值。
此过滤器应使用类型 URL
type.googleapis.com/envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy
配置。
统计数据
每个配置的 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