Dubbo实践代理

Posted wuxiaofeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo实践代理相关的知识,希望对你有一定的参考价值。

Invoker调用

代理有几种方式:普通代理、JDK、Javassist库动态代理、Javassist库动态字节码代理。

生成代理的目的是你调用invoker的相关函数后,就等同于是调用DubboInvoker中的相关函数,也就是将本地调用转为网络调用并获得结果。

// create service proxy
return (T) proxyFactory.getProxy(invoker);
private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
/**
 * ProxyFactory. (API/SPI, Singleton, ThreadSafe)
 */
@SPI("javassist")
public interface ProxyFactory {

    /**
     * create proxy.
     *
     * @param invoker
     * @return proxy
     */
    @Adaptive({Constants.PROXY_KEY})
    <T> T getProxy(Invoker<T> invoker) throws RpcException;

    /**
     * create invoker.
     *
     * @param <T>
     * @param proxy
     * @param type
     * @param url
     * @return invoker
     */
    @Adaptive({Constants.PROXY_KEY})
    <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) throws RpcException;

}

 

以上是关于Dubbo实践代理的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo-go 服务代理模型

响应式编程的实践

Dubbo原理实现之代理接口的定义

Dubbo-服务消费者远程调用

dubbo上手实践

Dubbo Spring Boot 最佳实践整合 Demo 征集