现在我们来分析一下dubbo3的源码我們知道,目前RPC框架用的最多的就是dubbo3所以在看dubbo3源码之前我们需要先了解一下dubbo3的节点都有哪些。从服务模型的角度来看,dubbo3采用的是一种非常简單的模型,要么是提供方提供服务要么是消费方消费服务,所以基于这一点dubbo3里面抽象出了服务提供方(Provider)和服务消费方(Consumer)两个角色而连接Provider和Consumer的僦是注册中心(Registry),Provider把服务暴露在Registry上,而Consumer通过Registry来调用暴露在Registry上面的服务
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心
Monitor: 统计服务的調用次调和调用时间的监控中心。
先来看一下init方法
其实就是先判断是否为远程引用,然后加载注册中心的配置创建代理对象。通过ProxyFactory创建相应的代理对象一般是两种,一种是JdkProxyFactory也就是jdk动态代理,一种是JavassistProxyFactory也就是基于 Javassist 代理工厂实现类。如果实现了接口则用jdk动态代理,否则用基于 Javassist 代理工厂实现类