Dubbo源码解析系列

Hello,Dubbo

Posted by 加点代码调调味 on July 4, 2020

1. Hello,Dubbo

你好,dubbo,初次见面,我想和你交个朋友。

1.1.1. Dubbo你到底是什么?

先给出一套官方的说法:Apache Dubbo是一款高性能、轻量级基于Java的RPC开源框架。

1.1.2. 那么什么是RPC?

文档地址:http://dubbo.apache.org/zh-cn/docs/user/preface/background.html

文档简短形象的对单一应用架构、垂直应用架构、分布式服务架构、流动计算架构做了一个对比,可以很明白的看出这四个架构所适用的场景,因为业务需求越来越复杂,才会有这一系列的演变。

RPC英文全名为Remote Procedure Call,也叫远程过程调用,其实就是一个计算机通信协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。计算机通信协议有很多种,对于开发来说,很多熟悉的是HTTP协议,我这里就做个简单的比较,HTTP协议是属于应用层的,而RPC跨越了传输层和应用层。HTTP本身的三次握手协议,每发送一次请求,都会有一次建立连接的过程,就会带来一定的延迟,并且HTTP本身的报文庞大,而RPC可以按需连接,调用结束后就断掉,也可以是长链接,多个远程过程调用共享同一个链接,可以看出来RPC的效率要高于HTTP,但是相对于开发简单快速的HTTP服务,RPC服务就会显得复杂一些。

回到原先的话题,继续来聊聊dubbo。关于dubbo 的特点分别有连通性、健壮性、伸缩性、以及向未来架构的升级性。特点的详细介绍也可以参考上述链接的官方文档。官方文档拥有的内容我在这就不一一进行阐述了。

因为接下来需要对dubbo各个模块的源码以及原理进行解析,所以介绍一下dubbo的源码库,dubbo框架已经交由Apache基金会进行孵化,被挂在github开源。

github地址:https://github.com/apache/dubbo

然后讲一下dubbo的版本策略:

两个大版本并行发展,2.5.x是稳定版本,2.6.x是新功能实验版本。2.6上实验都稳定了以后,会迁移到2.5,所以如果你想了解dubbo最新的牛逼特性,就选择2.6,否则用2.5版本。我接下来介绍都是基于2.6.x版本。

1.1.3. dubbo框架源代码解析系列

Dubbo原理和源码解析之服务暴露

顺着dubbo入口撸ExtensionLoader源码

Dubbo源码解析(一)Hello,Dubbo

Dubbo源码解析(二)Dubbo扩展机制SPI

Dubbo源码解析(三)注册中心——开篇

Dubbo源码解析(四)注册中心——dubbo

Dubbo源码解析(五)注册中心——multicast

Dubbo源码解析(六)注册中心——redis

Dubbo源码解析(七)注册中心——zookeeper

Dubbo源码解析(八)远程通信——开篇

Dubbo源码解析(九)远程通信——Transport层

Dubbo源码解析(十)远程通信——Exchange层

Dubbo源码解析(十一)远程通信——Buffer

Dubbo源码解析(十二)远程通信——Telnet

Dubbo源码解析(十三)远程通信——Grizzly

Dubbo源码解析(十四)远程通信——Http

Dubbo源码解析(十五)远程通信——Mina

Dubbo源码解析(十六)远程通信——Netty3

Dubbo源码解析(十七)远程通信——Netty4

Dubbo源码解析(十八)远程通信——Zookeeper

Dubbo源码解析(十九)远程调用——开篇

Dubbo源码解析(二十)远程调用——Filter

Dubbo源码解析(二十一)远程调用——Listener

Dubbo源码解析(二十二)远程调用——Protocol

Dubbo源码解析(二十三)远程调用——Proxy

Dubbo源码解析(二十四)远程调用——dubbo协议

Dubbo源码解析(二十五)远程调用——hessian协议

Dubbo源码解析(二十六)远程调用——http协议

Dubbo源码解析(二十七)远程调用——injvm本地调用

Dubbo源码解析(二十八)远程调用——memcached协议

Dubbo源码解析(二十九)远程调用——redis协议

Dubbo源码解析(三十)远程调用——rest协议

Dubbo源码解析(三十一)远程调用——rmi协议

Dubbo源码解析(三十二)远程调用——thrift协议

Dubbo源码解析(三十三)远程调用——webservice协议

Dubbo源码解析(三十四)集群——开篇

Dubbo源码解析(三十五)集群——cluster

Dubbo源码解析(三十六)集群——configurator

Dubbo源码解析(三十七)集群——directory

Dubbo源码解析(三十八)集群——LoadBalance

Dubbo源码解析(三十九)集群——merger

Dubbo源码解析(四十)集群——router

Dubbo源码解析(四十一)集群——Mock

Dubbo源码解析(四十二)序列化——开篇

Dubbo源码解析(四十三)2.7新特性

Dubbo ServiceBean启动源码解析

聊聊Dubbo(四):核心源码-切入Spring

聊聊Dubbo(九):核心源码-服务端启动流程1

聊聊Dubbo(九):核心源码-服务端启动流程2

Dubbo源码解析(四十四)服务暴露过程

Dubbo源码解析(四十五)服务引用过程

Dubbo源码解析(四十六)消费端发送请求过程

Dubbo源码解析(四十七)服务端处理请求过程

Dubbo源码解析(四十八)异步化改造

Dubbo Roadmap与未来展望

从2.7.0-2.7.5版本,Dubbo调用链路是如何提升30%性能的

一顿火锅引发对限流的思考,深夜误点!

美股熔断机制和服务熔断机制有什么异曲同工之妙

Congratulations Apache® Dubbo™ as a TLP

  • 作者:加点代码调调味

  • 链接:https://segmentfault.com/u/crazyhzm

  • 来源:SegmentFault 思否

  • 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。