.
// org.apache.dubbo.rpc.Filter
// dubbo-config/dubbo-config-api/META-INF/services/org.apache.dubbo.rpc.Filter
// mockfilter=org.apache.dubbo.config.mock.MockFilter // 支持unknown;
//
// dubbo-filter/dubbo-filter-cache/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
// cache=org.apache.dubbo.cache.filter.CacheFilter // 支持server、client;providerUrl地址存在cache参数;根据请求参数作为key,读取缓存,有缓存直接返回,没缓存就调用服务写入缓存,然后返回。
//
// dubbo-filter/dubbo-filter-validation/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
// validation=org.apache.dubbo.validation.filter.ValidationFilter // 支持server、client;providerUrl地址存在validation参数;校验调用参数
//
// dubbo-monitor/dubbo-monitor-api/META-INF/services/org.apache.dubbo.rpc.Filter
// monitor=org.apache.dubbo.monitor.support.MonitorFilter // 支持server、client;providerUrl地址存在monitor参数;每次请求就调用次数+1
//
// dubbo-monitor/dubbo-monitor-default/META-INF/services/org.apache.dubbo.rpc.Filter
// metrics=org.apache.dubbo.monitor.dubbo.MetricsFilter // 支持unknown;发布Metrics服务(可dubbo调用),让其他client能拉取;收集调用数据记录到内存(接口名、方法名、返回值success、响应时间)
//
// dubbo-rpc/dubbo-rpc-api/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
// echo=org.apache.dubbo.rpc.filter.EchoFilter // 支持server;调用方法是$ECHO;请求什么就响应什么;
// generic=org.apache.dubbo.rpc.filter.GenericFilter // 支持server;处理泛化调用;调用方法是$INVOKE;
// genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter // 支持client;url中包含generic参数;构建client的泛化调用参数;
// token=org.apache.dubbo.rpc.filter.TokenFilter // 支持server;providerUrl地址存在token参数;检查client调用传递的Attachments中是否等于配置的token
// accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter // 支持server;providerUrl地址存在dubbo.accesslog参数;执行:1、开启异步线程消费内存的日志记录到文件;2、记录相关信息到内存(接口名、方法名、版本、分组、调用时间、参数类型列表、参数列表)
// activelimit=org.apache.dubbo.rpc.filter.ActiveLimitFilter // 支持client;检查actives数量是否超过url中配置的key为"method0.actives"的阈值;超过就等待"method0.timeout",如果没降下来,就抛出异常。
// classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter // 支持server;修改线程上下文的类加载为接口的类加载器。
// context=org.apache.dubbo.rpc.filter.ContextFilter // 支持server;读取invocation.getAttachments()的数据,设置基本数据(invoker、invocation、本地ip、远程ip)到 RpcContext.getContext().setAttachments(attachments)
// consumercontext=org.apache.dubbo.rpc.filter.ConsumerContextFilter // 支持client;清除服务端的无效数据,设置基本数据(invoker、invocation、本地ip、远程ip)到 RpcContext.getContext().setAttachments(attachments)
// exception=org.apache.dubbo.rpc.filter.ExceptionFilter // 支持server;把抛出来的((是RuntimeException || 是Exception) && 不是RpcException )异常转成字符串
// executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter // 支持server;检查方法的调用阈值超过"method0.executes",就抛出异常。
// deprecated=org.apache.dubbo.rpc.filter.DeprecatedFilter // 支持client;检查方法存在"method0.deprecated"参数,就记录一条错误记录到日志文件中
// compatible=org.apache.dubbo.rpc.filter.CompatibleFilter // 支持unknown;如果响应的返回值不是目标类型,就自动转换目标类型
// timeout=org.apache.dubbo.rpc.filter.TimeoutFilter // 支持server;如果响应时间超过url中配置的"method0.timeout"值,就写一条警告日志到日志文件中
//
// dubbo-rpc/dubbo-rpc-dubbo/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
// trace=org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter // 支持server;存在调用的时候给《TraceTelnet客户端列表》发送消息(包含:rpc调用的客户端地址、接口名、方法名、调用参数、返回值、响应时间)
// future=org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter // 支持client;支持异步调用
.
.