文档章节

dubbo中的Filter顺序是如何确定的

JasonSE
 JasonSE
发布于 2016/04/17 17:49
字数 400
阅读 464
收藏 4
点赞 1
评论 0
服务提供方的过滤器被调用顺序:
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

共有 人打赏支持
JasonSE
粉丝 32
博文 50
码字总数 15572
作品 0
朝阳
程序员
Dubbo的Filter执行顺序分析

最近用到了Dubbo的Filter来做一些监控的东西,顺便整理了一下dubbo中的Filter调用顺序及如何确定的。 服务提供方的过滤器被调用顺序: EchoFilter->ClassLoaderFilter->GenericFilter->Cont...

宸明 ⋅ 01/23 ⋅ 0

从ExtensionLoader看Dubbo插件化

欢迎加入DUBBO交流群:259566260 之前很多人问我Dubbo插件化是怎么实现的,我都是简单回答SPI。了解SPI的人知道,它只是提供一种协议,并没有提供相关插件化实施的接口,不像OSGI那样有一成套...

Bieber ⋅ 2015/05/23 ⋅ 14

分布式系统的跟踪系统Dubbo RPC处理

分布式系统的跟踪系统Dubbo RPC处理 接着前一篇博文http://blog.csdn.net/doctor_who2004/article/details/46974695 上篇只是提供了一个思想,今天具体给出dubbo rpc 处理细节。 dubbo prc处...

Beaver_ ⋅ 2015/10/12 ⋅ 1

Dubbo之telnet实现

我们可以通过telnet来访问道对应dubbo服务的信息 比如 1737165qEu871390.png 我们可以利用一些指令来访问。 我们知道,默认情况下,dubbo使用netty做transport。 那么dubbo是如何区分开正常业...

波波维奇 ⋅ 2017/11/30 ⋅ 0

由Dubbo回声测试学到的

最近在看Dubbo的用户手册,看到了回声测试一小节的说明如下,请注意图片中的红框中的部分: 红色部分说:只需要将任意服务引用强制转换为EchoService,即可使用。 看到这里我想起了java中关于...

一条大河波浪宽 ⋅ 2015/05/27 ⋅ 17

SSM(十二) dubbo日志插件

dubbo-filter.jpg 前言 在之前dubbo分布式框架中讲到了如何利用dubbo来搭建一个微服务项目。其中还有一些值得优化提高开发效率的地方,比如日志: 当我们一个项目拆分为N多个微服务之后,当其...

crossoverJie ⋅ 2017/04/25 ⋅ 0

如何更好地学习dubbo源代码

作者:道业 Dubbo的官方首页在这里:http://code.alibabatech.com/wiki/display/dubbo/Home 很荣幸,作为这样一款业界使用率和好评率出众的RPC框架的维护者,今天这个文章主要是想帮助那些热...

指尖的舞者 ⋅ 2016/08/05 ⋅ 0

肖亭/zipkin-dubbo

zipkin-demo zipKin测试用例 dubbo接入方法: 1.将dubbo-common打成jar添加依赖 2.在resources目录下新建META-INF/dubbo目录添加com.alibaba.dubbo.rpc.Filter文件 3.Filter文件中添加消费者,...

肖亭 ⋅ 2017/11/05 ⋅ 0

动手学dubbo之Container与SPI

在动手学dubbo之初体验一文中我们了解了dubbo的架构,接下来的几篇文章我会根据阅读Quick Start里面的demo源码来深入学习dubbo的实现。这一篇主要学习Container的原理、实现和作用。 一、从启...

ginobefun ⋅ 2017/07/13 ⋅ 0

dubbo源码解析(三)

这个地方非常重要,dubbo机制里面日志记录、超时等等功能都是在这一部分实现的。 如上一节在介绍扩展点加载时所述,在生成 Protocol 的 invoker 时,实际上使用了 装饰模式,第一个是 filter...

taikr ⋅ 2016/12/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Gitee 生成并部署SSH key

1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair...# 三次回车即可生成 ssh key 查看你的 ...

晨猫 ⋅ 51分钟前 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部