Dubbo
Dubbo2.6.5
君莫笑(๑˙ー˙๑)
欢迎互关,一起学习,共同进步
展开
-
Dubbo 源码阅读(一)getExtensionLoader 和 getExtension
//接口类型public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { if (type == null) throw new IllegalArgumentException("Extension type == null...原创 2020-03-31 10:45:05 · 298 阅读 · 0 评论 -
Dubbo 源码阅读(二)getActivateExtension
某此情况下,同一个接口的多个实现需要同时发挥作用,比如filter链。此时需要按条件选择一批实现类来工作。/** * @Activate(group = {"group1","group2"},order = 1,value = "value1")打在某个自定义的Filter上 */@Testpublic void testActivate() { ExtensionLoader...原创 2020-03-31 21:36:45 · 698 阅读 · 8 评论 -
Dubbo 源码阅读(三)getAdaptiveExtension
实际工作中,我们希望实例能懒加载,或者运行期自动选择注解 @Adaptive 能解决这个选择问题注解在实例类上时,直接选此类为适配类(一个接口只允许一个类标记)注解在接口方法上时,只为此方法生成代理逻辑(方法必须有参数为url或者参数有返回url的方法)/** * 各个实现类上面没有@Adaptive * SPI上有注解@SPI("b") * URL中有具体的值info.serv...原创 2020-03-31 21:36:56 · 343 阅读 · 0 评论 -
Dubbo 源码阅读(四)injectExtension
一个实现类里需要依赖另一个 @SPI 接口的实例,怎么办?如下示例,你需要写一个 set 方法:public class OrderServiceImpl implements OrderService { private InfoService infoService;//是dubbo的扩展点,是spring的bean接口 public void setInfoServic...原创 2020-04-01 10:03:59 · 598 阅读 · 0 评论 -
Dubbo 源码阅读(五)@EnableDubbo
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documented@EnableDubboConfig //解析属性文件@DubboComponentScan //扫描@Service和@referencepublic @interface EnableDubbo { @...原创 2020-04-01 19:08:36 · 1175 阅读 · 0 评论 -
Dubbo 源码阅读(六)ServiceBean<T>
服务暴露的过程源码过长的源码省略了,看重点afterPropertiesSet() -> export()@Overridepublic void export() { super.export(); // Publish ServiceBeanExportedEvent publishExportEvent();}跟 export:类 Servi...原创 2020-04-01 20:46:03 · 273 阅读 · 0 评论 -
Dubbo 源码阅读(七)ReferenceBean<T>
服务引入的过程源码过长的源码省略了,看重点afterPropertiesSet() -> getObject()@Overridepublic Object getObject throws Exception { return get();}跟 get:类 ReferenceConfigpublic synchronized T get() { if (...原创 2020-04-01 20:46:12 · 501 阅读 · 0 评论 -
Dubbo 源码阅读(八)RegistryProtocol
RPC过程源码@Override@SuppressWarnings("unchecked")public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException { //"registry" "dubbo" url = url.s...原创 2020-04-02 19:57:55 · 1161 阅读 · 0 评论 -
Dubbo 源码阅读(九)ProtocolFilterWrapper
Filter 调用源码public class ProtocolFilterWrapper implements Protocol { private final Protocol protocol; public ProtocolFilterWrapper(Protocol protocol) { if (protocol == null) { ...原创 2020-04-03 11:41:18 · 1140 阅读 · 2 评论 -
Dubbo 线程模型
两种线程IO线程:配置在netty连接点的用于处理网络数据的线程,主要处理编解码等直接与网络数据打交道的事件。业务线程:用于处理具体业务逻辑的线程,可以理解为自己在provider上写的代码所执行的线程环境。Dubbo 默认采用的是长连接的方式,即默认情况下一个consumer和一个provider之间只会建立一条链接,这种情况下:IO线程的工作就是编码和解码数据,监听具体的数据请求,...原创 2020-04-03 19:15:12 · 342 阅读 · 0 评论