- 什么是SPI机制?为什么使用SPI?— 延伸到双亲委派机制
- https://www.jianshu.com/p/99f568df0f05
- 聊聊Dubbo(五):核心源码-SPI扩展 https://www.jianshu.com/p/7daa38fc9711
- dubbo泛化调用原理?
- dubbo为什么要设计adaptive?注解在类上和注解在方法上的区别?
- https://www.jianshu.com/p/8fa0095d15c9
- @Adaptive注解,有两种注解方式:一种是注解在类上,一种是注解在方法上。
- 注解在类上,而且是注解在实现类上,目前dubbo只有AdaptiveCompiler和AdaptiveExtensionFactory类上标注了此注解,这是些特殊的类,ExtensionLoader需要依赖他们工作,所以得使用此方式。
- 注解在方法上,注解在接口的方法上,除了上面两个类之外,所有的都是注解在方法上。ExtensionLoader根据接口定义动态的生成适配器代码,并实例化这个生成的动态类。被Adaptive注解的方法会生成具体的方法实现。没有注解的方法生成的实现都是抛不支持的操作异常UnsupportedOperationException。被注解的方法在生成的动态类中,会根据url里的参数信息,来决定实际调用哪个扩展。
- Adaptive和Activate的区别?
- @Activate注解,此注解需要注解在类上或者方法上,并注明被激活的条件,以及所有的被激活实现类中的排序信息。
- JDK SPI和DubboSPI的区别?
- 扩展点增加了缓存
- 增加了IOC功能
- 增加了通过key获取扩展点的方式
- Dubbo的集群容错方案有哪些?
- 失败重试
- 快速失败
- 失败安全
- XXX
- dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
- 支持的通讯协议
- dubbo
- hession
- rmi
- http
- webserivce
- 支持的序列化协议
- hession
- java 二进制序列化
- json
- SOAP协议
- 为什么protobuf是效率最高的?
- 使用了proto编译器,自动进行序列化和反序列化,效率是json和xml的20~100倍。
- 数据压缩后体积小,节约带宽。
- 支持的通讯协议
必读:
- Dubbo中SPI扩展机制详解
- ExtensionLoader类
- 聊聊Dubbo(五):核心源码-SPI扩展