zoukankan      html  css  js  c++  java
  • dubbo学习笔记(二)dubbo中的filter

    dubbo框架提供了filter机制的扩展点(本文基于dubbo2.6.0版本)。

    扩展接口

    在dubbo-rpc模块下的dubbo-rpc-api模块下定义了Filter接口:org.apache.dubbo.rpc.Filter

    dubbo自带的filter

    dubbo框架自带了22个Filter。

    在dubbo-rpc-api模块提供了15个filter:

    AccessLogFilter
    ActiveLimitFilter
    ClassLoaderFilter
    CompatibleFilter
    ConsumerContextFilter
    ContextFilter
    DeprecatedFilter
    EchoFilter
    ExceptionFilter
    ExecuteLimitFilter
    GenericFilter
    GenericImplFilter
    TimeoutFilter
    TokenFilter
    TpsLimitFilter

    dubbo-rpc-default模块提供了2个filter:

    FutureFilter
    TraceFilter

    dubbo-filter模块有2个子模块,提供了2个filter:

    dubbo-filter-cache提供了1个Filter:CacheFilter
    dubbo-filter-validation提供了1个Filter:ValidationFilter

    dubbo-test-examples提供了1个filter:

    LogFilter

    dubbo-spring-config提供了1个filter:

    MockFilter

    dubbo-monitor-api提供了1个filter:

    MonitorFilter

    Filter加载

    dubbo应用启动时,通过ProtocolFilterWrapper#buildInvokerChain构建了filter的调用链。
    启用demo应用,在buildInvokerChain方法的List<Filter> filters = ExtensionLoader.getExtensionLoader(Filter.class).getActivateExtension(invoker.getUrl(), key, group);下一行打个断点,
    在调试窗口看观察List<Filter> filters的值,

    provider端:

    consumer端:

    Filter加载顺序

    系统自带的filter,上面的图可以可以看到,
    provider端:EchoFilter->ClassLoaderFilter->GenericFilter->ContextFilter->TraceFilter->TimeoutFilter->MonitorFilter->ExceptionFilter
    consumer端:ConsumerContextFilter->FutureFilter->MonitorFilter

    @Active注解定义了Filter的位置和顺序,其中group属性定义了该Filter用于Provider或Consumer端,order属性定义了Filter的绝对顺序(数值小的排在前面)。

    EchoFilter为例

    @Activate(group = Constants.PROVIDER, order = -110000)
    public class EchoFilter implements Filter {
        ...
    }
    

    表示在Provder端使用,绝对顺序为-110000。

    ClassLoaderFilter

    @Activate(group = Constants.PROVIDER, order = -30000)
    public class ClassLoaderFilter implements Filter {
    ...
    }
    

    表示在Provder端使用,绝对顺序为-30000,值比-110000大,因此在EchoFilter的后面调用。

    Filter功能

    • EchoFilter

    回声测试。

    • ExceptionFilter

    异常处理。


    参考:
    http://dubbo.apache.org/zh-cn/docs/dev/impls/filter.html

  • 相关阅读:
    HADOOP_HIVE安装和配置
    LInux__增加交换空间(SWAP)的大小
    ORACLE__Linux下Oracle数据库的卸载、删除
    HADOOP__HBASE集群安装(自带ZOOKEEPER)
    HADOOP__PIG安装与配置
    HADOOP__HADOOP基础安装和配置
    PYTHON__Thread达到上限的解决方案(设置线程上限)
    MYSQL__MYSQL的一些基础设置
    Android Studio Unable to access Android SDK addon list Mac
    dmg 文件打不开,双击没反应
  • 原文地址:https://www.cnblogs.com/cdfive2018/p/10219730.html
Copyright © 2011-2022 走看看