Dubbo 代理¶
Dubbo 代理过滤器解码 dubbo 客户端与服务端之间的 RPC 协议。解码的信息会被转换为元数据。元数据主要包含基础请求 ID、请求类型、序列化类型以及路由所需要的服务名称、方法名称、参数名称和参数值。
过滤器的名称应该被配置为 envoy.filters.network.dubbo_proxy 。
统计¶
每个配置的 dubbo 代理过滤器统计以 dubbo.<stat_prefix>. 为跟,统计信息如下:
名称 |
类型 |
描述 |
---|---|---|
request |
Counter |
请求总数 |
request_twoway |
Counter |
双向请求总数 |
request_oneway |
Counter |
单向请求总数 |
request_event |
Counter |
事件请求总数 |
request_decoding_error |
Counter |
解码异常请求总数 |
request_decoding_success |
Counter |
解码成功请求总数 |
request_active |
Gauge |
活跃请求总数 |
response |
Counter |
响应总数 |
response_success |
Counter |
成功响应总数 |
response_error |
Counter |
协议解析异常的响应总数 |
response_error_caused_connection_close |
Counter |
下游关闭连接导致的响应总数 |
response_business_exception |
Counter |
协议包含业务层返回异常的响应总数 |
response_decoding_error |
Counter |
解码异常响应总数 |
response_decoding_success |
Counter |
解码成功响应总数 |
response_error |
Counter |
协议解析异常响应总数 |
local_response_success |
Counter |
本地响应总数 |
local_response_error |
Counter |
本地编码异常响应总数 |
local_response_business_exception |
Counter |
本地协议包含业务异常的相应总数 |
cx_destroy_local_with_active_rq |
Counter |
本地销毁的有活跃查询的连接总数 |
cx_destroy_remote_with_active_rq |
Counter |
远端销毁的有活跃查询的连接总数 |
基于 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
route_config:
name: local_route
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