中间件核心技术与实战
丁威
中通快递资深架构师,RocketMQ 社区首席布道师
19674 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
中间件核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

10|设计原理:Dubbo核心设计原理剖析

你好,我是丁威。
这节课,我们来剖析一下 Dubbo 中一些重要的设计理念。这些设计理念非常重要,在接下来的 11 和 12 讲 Dubbo 案例中也都会用到,所以希望你能跟上我的节奏,好好吸收这些知识。
微服务架构体系包含的技术要点很多,我们这节课没法覆盖 Dubbo 的所有设计理念,但我会带着你梳理 Dubbo 设计理念的整体脉络,把生产实践过程中会频繁用到的底层原理讲透,让你轻松驾驭 Dubbo 微服务。
我们这节课的主要内容包括服务注册与动态发现、服务调用、网络通信模型、高度灵活的扩展机制和泛化调用五个部分。

服务注册与动态发现

我们首先来看一下 Dubbo 的服务注册与动态发现机制。
Dubbo 的服务注册与发现机制如下图所示:
Dubbo 中主要包括四类角色,它们分别是注册中心(Registry)、服务调用者 & 消费端(Consumer)、服务提供者(Provider)和监控中心(Monitor)。
在实现服务注册与发现时,有三个要点。
服务提供者 (Provider) 在启动的时候在注册中心 (Register) 注册服务,注册中心 (Registry) 会存储服务提供者的相关信息。
服务调用者 (Consumer) 在启动的时候向注册中心订阅指定服务,注册中心将以某种机制(推或拉)告知消费端服务提供者列表。
当服务提供者数量变化(服务提供者扩容、缩容、宕机等因素)时,注册中心需要以某种方式 (推或拉) 告知消费端,以便消费端进行正常的负载均衡。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Dubbo核心设计原理剖析 Dubbo的设计理念包括服务注册与动态发现、服务调用、网络通信模型、高度灵活的扩展机制和泛化调用。在服务注册与动态发现中,Dubbo通过ZooKeeper实现服务提供者和消费者的注册与发现,以及动态配置的实现。服务调用方面,Dubbo提供了负载均衡、路由、故障转移等机制,以及多种调用失败策略。此外,Dubbo还涉及网络通信模型和性能调优手段。 Dubbo的设计理念涵盖了微服务架构中的关键技术要点,包括服务注册与发现、服务调用、负载均衡、路由、故障转移等方面。通过对ZooKeeper注册中心的解析,以及Dubbo提供的负载均衡算法和调用失败策略,读者可以深入了解Dubbo的核心设计原理,为实际应用提供理论指导。 Dubbo的网络通信模型主要包括网络通信协议和线程派发机制两部分。网络传输通常需要自定义通信协议,同时,为了提高传输效率,会对传输数据进行序列化与压缩处理。Dubbo支持多种序列化协议,如java、compactedjava、nativejava、fastjson等。此外,Dubbo提供了多种线程派发机制,以指导IO线程与业务线程的分工,考虑线程切换带来的开销问题。 Dubbo的高度灵活的扩展机制基于SPI设计理念,通过实现对应的接口并在统一的扩展目录中存放扩展定义来实现。这种设计使得Dubbo可以轻松吸收其他功能,如gRPC,成为微服务体系的完整解决方案。此外,Dubbo还通过Filter机制实现业务功能级别的扩展。 最后,Dubbo的泛化调用机制解决了API模块变化对Provider和Consumer的影响,使得服务端可以不断演变而不影响客户端已有服务的运行。 总之,Dubbo的核心设计原理涵盖了微服务架构中的关键技术要点,包括服务注册与发现、服务调用、网络通信模型、扩展机制和泛化调用等方面,为读者提供了深入理解Dubbo的机会,指导更好地实践微服务。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《中间件核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • zhengyu.nie
    作者你好,dubbo线程池默认200个线程设置基于什么考虑?你的线程池文章推荐是20个线程
    2022-10-26归属地:浙江
  • fantasyer
    老师好,网络通信模型这部分提到,iothreads默认为 CPU 核数再加一,如果增加iothreads的话也建议保持在“2*CPU 核数”以下,这里线程数不超过2*CPU核数原因是什么?
    2022-07-19
    2
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部