【开源项目学习】源码剖析,学习dubbo代码

版权声明:尊重博主原创文章,转载请注明出处 https://blog.csdn.net/weixin_39020940/article/details/81900807

【前言】

这篇文字不全是讲dubbo代码框架,而是博主怎么根据代码系统学习梳理的过程

dubbo源码地址:https://github.com/apache/incubator-dubbo

代码分析过程用的代码地图工具参考链接:

https://blog.csdn.net/weixin_39020940/article/details/80633835

【正文】

稍微看过dubbo的应该知道,这是一个分布式服务框架,提供高性能和透明化的RPC远程服务调用方案,采用SOA服务治理方案。

由于dubbo代码相对复杂,需要读者提前有一些dubbo基本框架知识,不然很难有头绪(作者也是)

1、它使用了spring

2、它是无代码侵入的rpc调用框架,需要配置服务xml

3、dubbo将服务xml解析并注册服务到服务管理侧

4、消费者调用服务者

更多的功能限于篇幅就不在这里讨论了,这里还是回归记录博主学习这块代码的过程

一、首先是dubbo将服务xml解析并注册服务到服务管理侧

用starTool导出dubbo代码地图,并过滤出dubbo-config下面的代码

config目录下大部分xxConfig都继承了AbstractConfig,先看一下AbstractConfig

    static {
        legacyProperties.put("dubbo.protocol.name", "dubbo.service.protocol");
        legacyProperties.put("dubbo.protocol.host", "dubbo.service.server.host");
        legacyProperties.put("dubbo.protocol.port", "dubbo.service.server.port");
        legacyProperties.put("dubbo.protocol.threads", "dubbo.service.max.thread.pool.size");
        legacyProperties.put("dubbo.consumer.timeout", "dubbo.service.invoke.timeout");
        legacyProperties.put("dubbo.consumer.retries", "dubbo.service.max.retry.providers");
        legacyProperties.put("dubbo.consumer.check", "dubbo.service.allow.no.provider");
        legacyProperties.put("dubbo.service.url", "dubbo.service.address");

上面正式dubbo提供的配置参数,不过AbstractConfig是抽象类,不能实例化,找一个继承它的类看一下,既然知道dubbo是provider和consumer之间的框架,自然是先看ProviderConfig

    // service IP addresses (used when there are multiple network cards available)
    private String host;

    // service port
    private Integer port;

    // context path
    private String contextpath;

打开ProviderConfig看到基本就对上Provider定义使用的配置了,ProviderConfig里面基本都是set/get方法获取设置属性,看一下设置属性的调用点,就找到了ServiceConfig下面convertProtocolToProvider,而这个的调用点在ServiceBean.afterPropertiesSet

(未完待续)

猜你喜欢

转载自blog.csdn.net/weixin_39020940/article/details/81900807