专栏首页高级开发进阶【JavaP6大纲】Dubbo篇:Dubbo 用到哪些设计模式?

【JavaP6大纲】Dubbo篇:Dubbo 用到哪些设计模式?

Dubbo 用到哪些设计模式?

Dubbo 框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载、权限控制等功能。 工厂模式 Provider 在 export 服务时,会调用 ServiceConfig 的 export 方法。ServiceConfig中有个字段: private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); Dubbo 里有很多这种代码。这也是一种工厂模式,只是实现类的获取采用了 JDK SPI 的机制。这么实现的优点是可扩展性强,想要扩展实现,只需要在 classpath下增加个文件就可以了,代码零侵入。另外,像上面的 Adaptive 实现,可以做到调用时动态决定调用哪个实现,但是由于这种实现采用了动态代理,会造成代码调试比较麻烦,需要分析出实际调用的实现类。

装饰器模式 Dubbo 在启动和调用阶段都大量使用了装饰器模式。以 Provider 提供的调用链为例,具体的调用链代码是在 ProtocolFilterWrapper 的 buildInvokerChain 完成的,具体是将注解中含有 group=provider 的 Filter 实现,按照 order 排序,最后的调用顺序是: EchoFilter -> ClassLoaderFilter -> GenericFilter -> ContextFilter -> ExecuteLimitFilter -> TraceFilter -> TimeoutFilter -> MonitorFilter -> ExceptionFilter

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【JavaP6大纲】Dubbo篇:如何自己设计一个类似 Dubbo 的 RPC 框架?

    上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用 zookeeper 来做,对吧。 然后你的消费者需要去注册中心拿对应的服...

    java_wxid
  • 【JavaP6大纲】Dubbo篇:Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

    负载均衡: 1、Random LoadBalance,随机(默认的负载均衡策略)是加权随机算法的具体实现,可以完全随机,也可以按权重设置随机概率。 2、Ro...

    java_wxid
  • dubbo专题-深入分析zookeeper连接原理

    上篇的dubbo源码解析-远程暴露中讲解了远程暴露的大致过程,但是期间大家也发现了,这个过程涉及到了很多分支,比如netty,zookeeper.当然设计模式就...

    java进阶架构师
  • 「冰河技术」部分精华文章目录汇总

    个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准...

    冰河
  • 结合 Sentinel 专栏谈谈我的源码阅读方法

    Sentinel 系列共包含15篇文章,主要以源码分析为手段,图文并茂的方式对 Sentinel 的架构设计理念、核心实现要点进行了一一剖析,并加以实战分析与思...

    丁威
  • Dubbo源码解析 —— zookeeper连接

    前言 上周的dubbo源码解析-远程暴露中讲解了远程暴露的大致过程,但是期间大家也发现了,这个过程涉及到了很多分支,比如 netty, zookeeper.当...

    芋道源码
  • 正在刷大厂面试题,主管拍了我一下

    从业十多年,我从一位向往大厂的面试者成为了一个大厂面试官,身边很多从事Java 开发的朋友都不时咨询如何才能进大厂。的确,进大厂对于大多数人来说,绝不只是谈资,...

    Guide哥
  • 深入理解Dubbo源码(一),如何高效的阅读Dubbo框架源码

    这几天一直在探索Dubbo源码,本来也想写一系列Dubbo源码分析文章的,但觉得没必要,因为官方文档的源码导读就介绍了怎么去阅读Dubbo的源码,今年也出了本书...

    Java艺术
  • 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

    Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉...

    Java技术栈

扫码关注云+社区

领取腾讯云代金券