一、介绍
filter是dubbo是针对服务调用方和服务生产方的一种对调用过程拦截处理的扩展能力,基于该能力可以对调用过程进行定制化和灵活的增强
二、同步方式下的filter链
1、生产方的filter逻辑,组装入口是ProtocolFilterWrapper
2、调用方filter逻辑,调用方的逻辑大概说一下,后面会开一篇专门的文章介绍调用方的详细过程
调用方:先通过spring的factorybean的功能初始化一个proxy,这个proxy就是调用方真正发起调用的入口,通过该入口,会调用到filter、invoker、服务方等
三、filter的扩展设计
filter是在dubbo四大核心功能之一spi的基础能力上进行实现的
设计模式采用了传统的责任链模式
四、实现demo
五:异步化设计(todo,补充具体的案例)
六、2.6异步及其存在的问题
而采用异步调用后,由于异步结果在异步线程中单独执行,所以流经后半段Filter链的Result是空值,当真正的结果返回时已无法被Filter链处理。(注:官方的说明)
七、2.7异步解决方案
引入了异步回调的方式解决