Dubbo源码剖析与实战

Dubbo源码剖析与实战 / 问题+思路+解法+代码=Dubbo最强攻略

何辉 平安壹钱包架构师
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词|带你玩转Dubbo微服务框架

    你好,很高兴能在这门Dubbo实战进阶课中相遇~

  • 01|温故知新:Dubbo基础知识你掌握得如何?

    Dubbo的总体架构有五个角色,Provider 暴露接口提供服务,Consumer 调用已暴露的接口,Registry 管理注册的服务与接口,Monitor 统计服务调用次数和调用时间,Container 为服务的稳定运行提供运行环境。

  • 特别放送|Dubbo基础特性:视频带学,助你巩固基础

    视频形式,统一梳理Dubbo日常开发必须掌握的基础特性

  • 02|异步化实践:莫名其妙出现线程池耗尽怎么办?

    如何进行异步化改造,以避免Dubbo线程池耗尽,核心有三要素:开启异步模式、衔接上下文信息、将结果写入到上下文中。

  • 03|隐式传递:如何精准找出一次请求的全部日志?

    从检索日志困难的问题开始,分析显式传递和隐式传递两种不同方案带来的问题和影响。

  • 04|泛化调用:三步教你搭建通用的泛化调用框架

    从Web服务器一段常见的代码调用开始,用反射调用和泛化调用两种调用方案做了不同尝试,核心仍然是希望简化开发人员代码编写,提升功能通用性。

  • 05|点点直连:点对点搭建产线“后门”的万能管控

    从一个修复产线数据的事件开始,通过正规流程、粗暴流程、万能管控三种方式来尝试快速解决产线问题。

  • 06|事件通知:一招打败各种神乎其神的回调事件

    从一个普通的商品支付功能开始,抛出如何优雅快速处理多个事件的问题,从面向过程,到简单封装,再到面向对象分析,我们采用巧妙的6W分析模型,推导出了与源码不谋而合的解决方案。

  • 07|参数验证:写个参数校验居然也会被训?

    小马写的参数校验,老大CR后发现好几个方法并不完善,我们分别从简单验证、通知验证、统一验证三种方式分析并尝试解决。

  • 08|缓存操作:如何为接口优雅地提供缓存功能?

    从一个简单的App首页加载渲染缓慢例子开始,我们思考了简单处理、套用源码,最终集成了 Redisson 缓存框架得以解决。

  • 09|流量控制:控制接口调用请求流量的三个秘诀

    我们继续探讨App首页加载渲染缓慢的例子,考虑用户增长时如何从流量层面进行一定的控制。限流,其实就是在标准容量与实时容量之间比大小。

  • 10|服务认证:被异构系统侵入调用了,怎么办?

    从一个异构系统调用支付系统引发了QPS暴增的问题开始,我们意识到内部系统与异构系统之间缺乏一种安全的认证机制,分析了服务如何进行认证。

  • 11|配置加载顺序:为什么你设置的超时时间不生效?

    从系统跨越版本升级而引发的超时时间失效的问题开始,我们针对代码的三个现状,开启了 Debug 调试分析之旅,找到了 timeout 无法获取预期值的源头,最终也找到了解决超时时间失效的方案。

  • 12|源码框架:框架在源码层面如何体现分层?

    从消费方发起调用开始介入,逐步分析Dubbo的每层模块的由来以及承担的职责,形成对Dubbo的整体了解,最后在 Dubbo 3.0.7 源码层面上标识出每个模块与工程的 Module 对号入座。

  • 13|集成框架:框架如何与Spring有机结合?

    从一段integration层现状的代码开始,分析写很多相似代码时如何进行封装、抽象处理,以达到简化代码编写、节省重复劳动力的目的。

  • 14|SPI 机制:Dubbo的SPI比JDK的SPI好在哪里?

    今天,我们从一个 Web 应用预加载 Dubbo 框架资源的案例开始,思考如何实现需求。

  • 15|Wrapper机制:Wrapper是怎么降低调用开销的?

    今天,我们对在提供方服务设计统一入口来接收各种请求的案例进行分析与改造。

  • 16|Compiler编译:神乎其神的编译你是否有过胆怯?

    我们接着上一讲刚学会的自定义代理案例,在不使用 Wrapper 已有机制的能力下,自己尝试使用简单的 API 操作来创建代理类。

  • 17|Adaptive适配:Dubbo的Adaptive特殊在哪里?

    我们从 Adaptive 注解为什么被 Dubbo 框架诸多地方使用的疑问开始,跟踪 getAdaptiveExtension 方法的源码,最后得出@Adaptive 注解其实是生成了一个自适应的代理类,每个 SPI 接口都有且仅有一个自适应扩展点。

  • 18|实例注入:实例注入机制居然可以如此简单?

    我们从学过的获取自适应扩展点实例开始,反思既然有特殊的实例化操作,想必也有普通的实例化操作,为后续的源码反向跟踪撕开了一道口子,找到了 createExtension 创建普通扩展点的核心源码。

  • 19|发布流程:带你一窥服务发布的三个重要环节

    我们和Dubbo 总体架构示意图中的 ①②③ 步再续前缘,通过熟知的流程,引出了陌生的发布流程,从配置、导出、注册三方面深入研究了源码。

  • 20|订阅流程:消费方是怎么知道提供方地址信息的?

    我们抛出消费方是怎么知道提供方地址的问题,对比订阅流程与发布流程、 @DubboService 与 @DubboReference、ServiceConfig 与 ReferenceConfig、本地导出与本地引用、远程导出与远程引用。

  • 21|调用流程:消费方的调用流程体系,你知道多少?

    从一个被 @DubboReference 标识的常规成员变量开始,我们借鉴 12 字方针,最终梳理出了消费方调用流程的大体框架。

  • 22|协议编解码:接口调用的数据是如何发到网络中的?

    梳理帧格式的概念,借助 client 向 server 发送数据的简单模型案例,引出了 client 与 server 约定了三种类型的协议格式,分别是固定长度、分隔符、定长+变长。

  • 23|集群扩展:发送请求遇到服务不可用,怎么办?

    我们从一个消费方在同机房调用连续发生两种异常开始,分析了超时异常和无提供者异常大致方向的定位排查。

  • 24|拦截扩展:如何利用Filter进行扩展?

    我们从已经学过的过滤器知识点,抛出了一个在面对需求如何适当利用过滤器进行扩展的问题,通过四个拦截场景,分析了常见的**分离、相交、相切、包含**四种关系。

  • 25|注册扩展:如何统一添加注册信息?

    我们从一个简单联调测试场景开始,思考提供方应用如果有多个 IP 节点部署时,消费方该如何精准选择提供方 IP 进行调用。

  • 26|线程池扩展:如何选择Dubbo线程池?

    基于线程池创建的核心原理,我们分析了 Dubbo 四种线程池的特点和使用场景,FixedThreadPool、LimitedThreadPool、CachedThreadPool、EagerThreadPool。不过线程池各有各的好处,也各有弊端。

  • 27|协议扩展:如何快速控制应用的上下线?

    我们基于发布场景开始研究,在发布期间,大批量系统集中在 dubbo-admin 控制台进行上下线发布,发生了页面混乱问题,分析如何进行上下线改造。

  • 加餐|中小厂高频面试:基础式的CRUD属性你清楚么?

    中小厂面试,如何顺利通关

  • 加餐|大厂高频面试:底层的源码逻辑知多少?

    大厂面试,如何顺利通关

  • 结束语|愿你能将Dubbo所学迁移至其他微服务框架

    如何迅速了解一个系统

  • 期末测试|来赴一场满分之约!

    来测一测你学得如何了

33讲

你将获得

  • 10 大特性,提升解决问题能力
  • 源码领读,11 项框架设计之道
  • 活学活用,5 类定向开发需求
  • 面试必备,大小厂高频题目剖析

讲师介绍


课程介绍

比如,你在用 Dubbo 设计功能、代码编写、问题排查时一定会有这样的问题:

  • 该怎么快速掌握 Dubbo 框架体系和丰富特性呢?
  • Dubbo 的知识点我都看了,为什么实际应用就想不到呢?
  • Dubbo 某些特性我也知道,但为什么需要这样的特性呢?
  • 看到 Dubbo 各种底层报错,如何反推用哪些特性解决呢?

何辉老师将结合自己丰富的 Dubbo 项目经历和培训经验,以案例驱动的思路,从一个个开发常见问题出发,带你一步步分析,分析问题 -> 推导出需要的技术支撑,组合解决方案 -> 快速有效地细化出落地方案,助你构建起 Dubbo 知识体系之余,全方位提升问题解决能力。

课程设计

专栏分为 4 个模块:

  • 如果你是初学者,掌握好基础篇就能应付日常开发实践;
  • 如果你是有 Dubbo 基础的开发者,掌握特色篇基本上可以在实战中横着走;
  • 如果你对自己有更高要求,掌握了源码篇,你可以称得上 Dubbo 高手;
  • 如果你能在拓展篇中活学活用前面的知识,就能成功晋级 Dubbo 宗师。

基础篇:用一张 Dubbo 的总体架构图串联日常的开发流程,勾勒对 Dubbo 数十个基础知识点的整体印象,并用视频形式梳理 Dubbo 日常开发必须掌握的基础特性,查漏补缺。

特色篇:以真实案例为背景,逐步分析、推导出需要的技术手段,灵活应用框架中的高级特性来解决实际问题,深入理解高级特性之余,提高利用高级特性开发通用产品功能的能力。

源码篇:通过源码的学习,知其然,知其所以然,站在框架设计者的角度,体会 Dubbo 框架每个机制设计的亮点所在,锻炼对 Dubbo 掌握的纵向深度。

拓展篇:针对一些工作中的定向开发诉求,分析出需要的功能解决方案,并且从前面已学的知识点中,提取关键要素尝试解决,在应用中进一步提升对 Dubbo 的理解。


课程目录


适合人群

1~5 年的后端开发人员,有 Java 基础,了解 Dubbo。


订阅须知

随机推荐

轻上西梅饮膳食纤维植物果蔬汁益生菌元风味饮料性价比如何?评测...

轻上西梅饮膳食纤维植物果蔬汁益生菌元风味饮料怎么样?亲测解析...

狮王小狮王儿童氟防蛀牙膏 20g好不好,入手推荐?详细评测分享?

雀巢超启能恩奶粉3段760g*4罐好不好?图文评测爆料分析?

卡诗元气姜粉瓶生姜洗发水250ml是否值得入手?买家评测分享?

佳沃云南蓝莓14mm 12盒原箱生鲜评测好不好用?独家评测揭秘内幕...