
dubbo
文章平均质量分 81
泮小俊233
技术爱好者
展开
-
Dubbo源码之服务端暴露流程
我们从AnnotationBean#postProcessAfterInitialization为入口分析 public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (! isMatchPackage(bea...原创 2018-06-03 15:22:40 · 404 阅读 · 0 评论 -
Dubbo源码@SPI
SPI机制,即对同一个接口会有不同的实现类,我们可以根据应用场景通过配置来选择使用不同的实现类。在Dubbo中,protocol的选择就是通过@SPI来实现。其SPI目的是遵守开闭原则的面向对象设计,对于变化点的可扩展性,利用配置式服务发现机制动态加载相关接口实现类。 在分析ReferenceConfig类中,获取相应协议的protocol作为扩展点。协议protocol的选择并没有在代码中显式表...原创 2018-05-29 20:22:34 · 288 阅读 · 1 评论 -
Javassist代理 Dubbo源码
代理在Dubbo中用到很多,无论是服务暴露端生成的invoker代理或者是消费者端的代理调用。Dubbo中默认采用javassit代理在内存中动态生成所代理的字节码。我们来看下JavassistProxyFactory中的代码 public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) ...原创 2018-05-30 13:31:27 · 566 阅读 · 0 评论 -
Dubbo源码之消费者端代理调用
由上一篇博客我们知道,消费者端调用服务,实际上是调用代理的invoke方法,内部是调用传入的handler的invoke()方法。这里是调用了InvokerInvocationHandler的invoke()方法,我们来看下具体逻辑。 public Object invoke(Object proxy, Method method, Object[] args) throws Throwab...原创 2018-05-30 23:44:26 · 698 阅读 · 0 评论 -
Dubbo源码消费者端服务的订阅流程
关注消费者端服务的订阅,我们从ReferenceConfig中的createProxy()开始分析,我们重点先关注其中的一句,当注册中心只有一个(单个或集群)时进入此分支即执行下面这一句。(关于createProxy整个流程会在后面博文中重点介绍)invoker = refprotocol.refer(interfaceClass, urls.get(0));其中refprotocol = Ext...原创 2018-05-31 21:58:39 · 1012 阅读 · 0 评论