`
donlianli
  • 浏览: 336157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:216506
社区版块
存档分类
最新评论

dubbo中的Filter顺序

阅读更多
最近发现dubbo的小bug,顺便整理了一下dubbo中的Filter调用顺序及如何确定的。
服务提供方的过滤器被调用顺序:
EchoFilter->ClassLoaderFilter->GenericFilter->ContextFilter->(这4个是在代码中指定的)
ExceptionFilter-> TimeoutFilter ->MonitorFilter-> TraceFilter
服务消费方的过滤器顺序:
ConsumerContextFilter->FutureFilter->MonitorFilter
负责加载过滤器的类
ProtocolFilterWrapper
 
这个顺序和SPI配置文件的顺序并不一致。那么是什么决定了Filter的顺序呢?
通过查看源代码可以看到,在初始化Filter时,有一个对所有的过滤器排序的过程,其使用的比较类是ActivateComparator。在这个类中,可以看到,是使用Filter中的Activate类进行排序的。而Activate注解中,有一个order的属性,这个属性指定了Filter在chain中的顺序。
通过查看EchoFilter的Activate属性,可以看到其order = -110000,而ClassLoaderFilter的order=-30000,因此可以断定,order值越小,其越位于调用端的最顶层。那么当order相同时(都没有设置时),又是根据什么排序的呢?
Collections.sort算法
从其说明文档可以看出,这个算法是一个稳定的排序算法,如果两个值相同,不会改变其前后顺序。并且从其文档可以看出,其所使用的是一个修改过的归并排序算法。
但是Activate的compare方法故意将两个相同的order类弄成了不同,导致排序有些变化。造成了最终上述顺序。
所以导致原来配置文件中的位置为:
1、monitor 
2、trace
3、exception
4、timeout
排序后变成了
1、exception
2、timeout
3、monitor
4、trace
 
文章链接http://donlianli.com/?p=36
 
 
 
0
0
分享到:
评论

相关推荐

    dubbo filter

    dubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filter

    DUBBO 中文帮助文档

    DUBBO中文API;DUBBO中文API;DUBBO中文API;DUBBO中文API;DUBBO中文API;

    dubbo中文文档说明

    dubbo中文文档说明。详细介绍了dubbo的使用教程。dubbo是阿里开源的一个soa框架。

    dubbo中文文档.zip

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。...本文提供了其中文文档之中的用户手册、开发手册、管理手册。

    dubbo中文文档集

    dubbo中文文档集,包括用户手册,开发手册,管理员手册

    dubbo资源 dubbo-admin dubbo demo

    dubbo资源 dubbo-admin dubbo demo

    dubbo-2.8.4.jar

    at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75) at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91) at ...

    dubbo中文文档官方版本

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。此中文文档可以让你更快更容易上手理解及应用到实际项目当中。

    dubbo示例代码dubbo-sample

    dubbo示例代码dubbo-sample

    incubator-dubbo-dubbo-2.6.1

    incubator-dubbo-dubbo-2.6.1

    dubbodubbo.zip

    dubbo资源包

    尚硅谷最新dubbo视频

    本套视频从分布式系统的基本概念出发,由浅入深,讲解了RPC原理,Dubbo基本使用,Dubbo高可用场景以及Dubbo原理,涉及了分布式系统中服务注册、服务发现、负载均衡、灰度发布、集群容错、服务降级等核心概念的讲解及...

    Dubbo 官方中文入门文档

    Dubbo 官方文档中文版本,整理页面,去除无效连接页面,添加页面跳转。

    Dubbo培训与实战

    首先,从知识层面对Dubbo有一个了解和认识,请看《Dubbo培训与实战.pptx》,然后把Dubbo用到实际项目中来,请看实例代码《Dubbo实例代码(Sping+Dubbo+Maven).zip》,里面包括dubboDemoProvide和dubboDemoConsumer...

    Dubbo手册.pdf

    Dubbo手册

    dubbo接口测试调试工具

    把deploy目录中的所有文件拷贝到F:\app\doe 如果您电脑安装了git bash,可以在bash窗口运行 ./deploy.sh start,否则如果没有安装git bash,只能打开cmd切换到F:\app\doe目录,然后执行java -jar dubbo-doe-1.0.0-...

    dubbo源码解析2

    dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.

    dubbo视频教程|基于Dubbo的分布式系统架构实战

    Dubbo是阿里巴巴开源的分布式服务化治理框架(微服务框架),久经阿里巴巴电商平台的大规模复杂业务的高并发考验,到目前为止Dubbo仍然是开源界中体系最完善的服务化治理框架,因此Dubbo被国内大量的的互联网公司和...

    dubbo所有文档英文+中文.rar

    dubbo所有文档英文+中文,非常适合想要学习dubbo的程序猿,这里面包含基本所有的文档,中文和英文文档 Administrator Guide-zh.pdf,Developer Guide-zh.pdf,Dubbo_Framework_Extensions.pdf,Dubbo_RPC_Features....

    Dubbo入门_实战

    Dubbo入门_实战  使用dubbo优化单点登录系统、 Dubbo的架构 监控中心

Global site tag (gtag.js) - Google Analytics