Dubbo源码学习之基本概念

Dubbo基本概念

1、URL

统一资源定位器

标准的URL格式

protocol://username:password@host:port/path?key=value&key2=value2

Dubbo中的URL

在Dubbo中:

服务是资源, dubbo://192.168.1.1:20880/com.example.HelloService?timeout=3000

注册中心是资源: zookeeper://127.0.0.1:2181/org.apache.dubbo.registry.RegistryService?application=demo-consumer&dubbo=2.0.2&interface=/org.apache.dubbo.registry.RegistryService&pid=1214&qos.port=33333&timestamp=1545721981947

消费者是资源: consumer://31.6.121.218/org.apache.dubbo.demo.DemoService?application=demo-consumer&

category=consumers&check=false&dubbo=2.0.2&interface=org.apache.dubbo.demo.DemoService&methods=sayHello&pid=1209&qos.port=33333&side=consumer&timestamp=1545
721827784
配置信息是资源
元数据信息是资源
外物皆资源,皆可用URL表示
 
我们用 <dubbo:service interface="com.example.api.HelloService" ref="helloService"/> 定义一个服务器,那么spring会把dubbo的标签解析成Bean对象,在服务暴露初始化时,将Bean对象转换成URL格式,所有Bean属性转成URL的参数。
URL在Dubbo中被当作是公共锲约,URL作为上下文信息贯穿整个框架
 
 
2、Invoker
Invoker是Dubbo的核心模型,代表一个可执行体。在服务提供方,Invoker用于调用服务提供类。在服务消费方,Invoker用于执行远程调用。
 
3、Invocation
调用对象
 
4、Java SPI
JDK标准的SPI会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,没有用上也会加载,会很浪费资源。
 
 5、Dubbo API
@SPI
修饰在接口上,注解的值代表的该接口默认的扩展点名
 
@Activate
表示实现类是否可以被激活。通常被用在一个接口有很多实现类,但是这些实现类在特定条件下才需要使用,比如RouterFactory接口,这是路由工厂接口,而它的实现类有TagRouterFactory,ConditionRouterFactory等等,在调用的时候,需要根据配置的一些信息来决定需不需要加载,而@Activate就提供了这个功能,修饰了这个注解的类,如果注解上没有任何值,那么表示无条件自动激活,当value有值,表示参数为有效值时激活,比如配置了cache=“lru”,自动激活CacheFilter,如果group=provider,表示只对提供方激活,group可选“provider”或“consumer”
 
 
自动注入
只有set注入,在注入时,会根据setXXX中的名字,去spring容器中寻找是否有beanName=xxx的对象,有则直接注入。如果没有,则会使用Dubbo默认的SpiExtensionFactory获取set方法参数类型的一个代理类
 
 
自动包装
对于一个接口实现,可以对它的外层进行包装,类似AOP
 
原文地址:https://www.cnblogs.com/linlf03/p/13065524.html