dubbo
tydhot
gogogo
展开
-
Dubbo的远程回调
在Dubbo作为消费者再通过NettyServer准备调用相应服务的发送请求的时候先通过NettyCodeAdapter来对具体的数据进行编码。在编码的过程中,遍历方法中的参数,来判断如果消费者调用了相应参数的方法,是否有必要进行远程回调。判断的依据为,在消费者组装需要远程调用的方法的参数的时候,对所需要回调的方法中的第几个参数进行了配置,生产者根据其方法的第几个参数的callBack属性...原创 2018-05-23 00:53:15 · 1347 阅读 · 0 评论 -
Dubbo消费者服务的订阅
在消费者通过refer()方法获得Invoker的时候同时完成对于相关方法的订阅。以默认的dubbo作为注册中心为例子。 当消费者调用refer()方法的时候由于当中的Url中的protocol为registry,所调用的refer()方法实则为registryProtocol的refer()方法。public <T> Invoker<T> refer(Cla...原创 2018-05-22 00:18:13 · 3120 阅读 · 0 评论 -
Dubbo消费者代理的调用
当消费者调用服务接口的方法时,实际调用的是接口代理类的InvokerInvocationHandler的invoke()方法。public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); Clas...原创 2018-05-16 22:00:22 · 1353 阅读 · 0 评论 -
Dubbo服务暴露的流程
在Dubbo服务暴露中,需要被暴露的服务的接口类首先会通过proxyFactory代理工厂获得代理的对象invoker,而暴露之后的服务被调用,也将都会通过这个invoker来调用相关的类。在dubbo中默认采用javassistProxyFactory来获取由javassist代理的invoker。public <T> Invoker<T> getInvoker...原创 2017-12-17 17:50:38 · 1101 阅读 · 0 评论 -
Dubbo的Javassist代理
Dubbo无论是生产端的暴露服务创建的invoker代理还是消费端创建的代理调用,都会需要经过代理。而Dubbo中默认采用javassit代理,动态的在内存当中生成所代理类的字节码,来完成代理的功能。 public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) { retur...原创 2017-12-10 13:10:10 · 1426 阅读 · 0 评论 -
Dubbo的SPI实现
在Dubbo中,例如protocol的选择都是通过@SPI来实现的。以ReferenceConfig获取相应配置的协议protocol作为扩展点为例子。private static final Protocol refprotocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();...原创 2017-12-05 00:11:06 · 381 阅读 · 0 评论 -
Dubbo消费者代理的创建
在消费者端,dubbo通过AnnotationBean类实现了BeanPostProcessor接口用来对beanFactory的中bean进行相应的处理。关于消费者的bean以及bean中@Reference注解的处理在AnnotationBean的postProcessBeforeInitialization()方法当中。对于bean中采用了@Reference注解的属性的处理在下面这...原创 2017-12-03 14:55:46 · 712 阅读 · 0 评论 -
Kryo序列化实现源码分析
在使用Kryo序列化之前需要将被序列化的类通过register()方法注册到其中去。在register的过程中,实则是要根据要序列化的类生成对应的Registration,Registration中记录了类的唯一id与对应的序列化类,在Kryo中,默认的序列化对象是FieldSerializer,没有特别指明的,都将以FieldSerializer来进行序列化。public Regist...原创 2019-04-17 01:48:57 · 1242 阅读 · 0 评论