本文由一位阿里粉丝分享经验,且看他如何一路逆袭
前言
过去十多年互联网产业的高速发展,在给社会带来深刻变革的同时,也催生了服务架构的演进:从传统的单体应用到面向服务的SOA,再到现今主流的微服务架构,而ApacheDubbo就是微服务领域中的先行者和佼佼者。
ApacheDubbo是阿里巴巴于年开源的一款高性能JavaRPC框架,开源伊始就在业界产生了很大的影响,被大量公司广泛使用,甚至在很多公司自研的RPC框架中也能看到不少Dubbo的影子,可以说Dubbo在国内服务化体系演进过程中扮演了一个非常重要的角色。虽然中间经历了几年时间的沉寂,不过年阿里巴巴又重启了对Dubbo的开源维护,受到了社区的广泛欢迎,社区活跃度也随之迅速提升,Dubbo也正在从一个微服务领域的高性能RPC框架,逐步演变为一个完整的微服务生态。
近年来,随着业务规模的发展和复杂度的增加,传统的单体应用已经很难适应业务迭代的诉求,越来越多的公司开始进行服务化的改造。很高兴看到ApacheDubbo被许多公司采用,作为服务化改造的基础架构进行演进。这里面就包括了许多互联网公司、国字头的大型企业,以及金融行业的巨头公司。ApacheDubbo因为良好的设计和扩展性受到许多开发者的欢迎,然而当开发者需要深入了解Dubbo底层的架构设计和实现的时候,往往会有些不知所措。网上也有很多爱好者撰写的源码分析等文章,虽有所有启发和裨益,但总觉得不够成体系。令人遗憾的是,市面上始终缺乏一本完整的、体系化的对ApacheDubbo进行深入原理剖析的书。
相信细心的朋友们都发现了小编将RPC构建分布式和Dubbo源码解析的学习路线已经整理了出来。有了学习路线、系统的学习方向,是不是感觉学习起来就一气呵成了?
接下来,小编就和大家一起深入探讨ApacheDubbo与实战解析,希望能够和大家一起共同进步。
第1章:Dubbo高性能RPC通信框架
本章我们介绍了整个应用框架的演进历史,以及Dubbo框架的历史背景和未来发展方向,同时介绍了Dubbo提供的特性。我们了解了国内有很多大公司都在使用Dubbo,目前Dubbo又重启维护,社区不断在成长与壮大。然后,我们概述了Dubbo的总体架构图和核心组件,并把所有核心组件合在一起,讲解Dubbo的一次总体调用的过程。
第2章:开发第一款Dubbo应用程序
在本章中,读者应该设置好了Dubbo开发环境和熟悉了代码的目录结构,并且了解了Dubbo丰富的使用方式,其中包含XML、注解和API的方式。其中最灵活的是基于JavaAPI的方式,很多网关的应用程序正是基于API的方式构建的。虽然本章讲解的是简单的应用程序,但是可以支持数千个并发连接,这得益于Dubbo底层的优雅封装。接下来,我们会更加深入地理解Dubbo,我们会深入讲解Dubbo采用的设计模式和内部设计等关键细节。
第3章:Dubbo注册中心
本章介绍了Dubbo中已经支持的注册中心。重点介绍了ZooKeeper和Redis两种注册中心。讲解了两种注册中心的数据结构,以及订阅发布机制的具体实现。然后介绍了注册中心中一些通用的关键特性,如数据缓存、重试等机制。最后,在对各种机制已经了解的前提下,讲解了整个注册中心源码的设计模式。
第4章:Dubbo扩展点加裁机制
本章的内容比较多,首先介绍了DubboSPI的一些概要信息,包括与JavaSPI的区别、DubboSPI的新特性、配置规范和内部缓存等。其次介绍了DubboSPI中最重要的三个注解:
SPI、Adaptive、Activate,讲解了这几个注解的作用及实现原理。然后结合ExtensionLoader类的源码介绍了整个DubboSPI中最关键的三个入口:getExtension、getAdaptiveExtension、getActivateExtension,并讲解了创建ExtensionLoader的工厂(ExtensionFactory)的工作原理。最后还讲解了自适应机制中动态编译的实现原理。第5章:Dubbo启停原理解析
本章我们首先对Dubbo中XMLschema约束文件进行了讲解,也包括如何映射到对应Java对象中。现在越来越多地使用注解的方式,我们也对注解的解析核心流程进行了探讨。然后对Dubbo框架的几种服务暴露原理进行了详解,紧接着对服务消费进行了讲解,这些服务暴露和消费对所有的协议都具有参考价值。最后我们对优雅停机的原理进行了探讨,也对以前的实现缺陷的原因进行了概述。
第6章:Dubbo远程调用
本章首先讲解了Dubbo调用原理和流程,同时对Dubbo的协议做了详细的讲解,这里的基础知识对RPC调用来说至关重要。在讲解完协议的基础上,我们又对Dubbo实现编解码、解决粘包和解包做了深入探讨。本章重点在RPC调用,以及处理常规方法调用,我们也对本地Telnet调用的设计和实现原理做了说明。在实际开发过程中,不熟悉Dubbo开发的人员也能快速通过fastjson方式测试和验证服务,在Telnet健康检查方面我们也做了进一步的说明。最后,我们对Dubbo中比较重要的Handler,比如Request/Response模型Handler和心跳Handler等做了详细的解析,同时对Dubbo的线程模型做了剖析。后面的