0%

介绍

作用

  1. 可以通过代码的方式决定某些对象的生命周期。
  2. 有利于JVM进行垃圾回收。
阅读全文 »

dubbo共有9种协议

  dubbo中支持9种协议,通过这9种协议进行调用。
  dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis、memcache、rest等多种协议,但是Dubbo官网是推荐我们使用dubbo协议的。
  dubbo对于9种协议的支持来自于SPI扩展机制,是SPI扩展机制在dubbo中的一个重要应用。

阅读全文 »

扩展点自动激活

  对于集合类扩展点,比如:Filter, InvokerListener, ExportListener, TelnetHandler, StatusChecker 等,可以同时加载多个实现,此时,可以用自动激活来简化配置。

阅读全文 »

扩展点自适应

介绍

  ExtensionLoader注入的依赖扩展点是一个Adaptive实例,直到扩展点方法执行时才决定调用是哪一个扩展点实现。
  dubbo使用url对象传递对象信息,包含key和value。
  扩展点方法调用会有URL参数(或是参数有URL成员)这样依赖的扩展点也可以从URL拿到配置信息,所有的扩展点自己定好配置的 Key后,配置信息从URL上从最外层传入。URL在配置传递上即是一条总线。

阅读全文 »

介绍

  SPI就是一种服务发现机制。
  SPI 是一种将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性的机制。引入服务提供者就是引入了 spi 接口的实现者,通过本地的注册发现获取到具体的实现类,轻松可插拔。
  Java SPI 就是把某个接口的 指定实现类 (通过在指定文件配置的方式)给实例化出来了。

阅读全文 »

介绍

  DubboSPI是基于JavaSPI的一个扩展与补充。
https://dubbo.apache.org/zh/docs/v2.7/dev/spi/

优势:

  1. Java SPI 每次都会把所有实现类都加载并实例化(是在迭代器迭代的时候创建实例),而 Dubbo SPI 是分两段创建实例,先进行类加载,然后在使用到具体实现的时候才实例化,并且 Dubbo SPI 大量使用缓存,会把 Class 对象和实例对象都缓存起来,性能更好。
  2. Java SPI 在类加载失败的时候难以定位异常;
  3. Dubbo SPI 还支持 IOC 和 AOP 。
阅读全文 »