读书人

读dubbo源码札记(三)

发布时间: 2012-10-26 10:30:58 作者: rapoo

读dubbo源码笔记(三)
现在看 核心的 ServiceConfig

首先推荐 看以下 netcomm 童鞋的文章
http://www.iteye.com/topic/1123039

在服务提供者暴露一个服务的详细过程 讲解的很清楚

服务提供者暴露一个服务
这些代码基本上都是在 ServiceConfig 完成

过程是
export --doExport --doExportUrls

export 方法 主要是 解决立即doExport还是 delay以后执行

doExport 主要是 装配和检查-- application,registries,monitor,Protocol

doExportUrls 真正的干活了
最主要的在最后的一段


如果 发现需要注册 那么
从proxyFactory 获取 AbstractProxyInvoker---(这里的URL是Registry URL,里面放置了 Provider URL )--- 然后 通过 RegistryProtocol 注册 --(export)-- 然后 ,生成InvokerDelegete --(这里的URL 是 从Register URL 取出Provider URL)-- 在根据实际 Provider Protocol--(export)-- 成 Exporter

RegistryProtocol 类 里面 这么玩的
    public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException {        //export invoker        final ExporterChangeableWrapper<T>  exporter = doLocolExport(originInvoker);        //registry provider        Registry registry = doRegister(originInvoker);        //设置exporter与registry的关系 (for unexport)        exporter.setRegistry(registry);        //保证每次export都返回一个新的exporter实例        return new Exporter<T>() {            public Invoker<T> getInvoker() {                return exporter.getInvoker();            }            public void unexport() {                exporter.unexport();            }        };    }


doLocolExport --最终执行 provider Protocol(dubboProtocol,rmiProtocol 等......................) 的 export方法 ,

doRegister 注册 URL ,实际上默认情况下 也是一个 dubbo协议RPC






读书人网 >软件架构设计

热点推荐