我的Dubbo学习计划

大家好,我是阿斌。从今天开始,我们就要开始学习一个优秀的RPC框架-Dubbo了。从大致的使用流程,再到深入探究源码,预计的学习时间是在三周左右。

开始学习

在学习之前,我们可以先了解一下,一个优秀的RPC框架能够提供什么样的能力?

远程调用

  • 动态代理
  • 序列化
  • 网络通信编码

img

对调用方来说,只需要调用一个接口,而接口最终的实现,是一个屏蔽了底层细节的proxy。proxy会帮助我们将参数序列化,编码,网络传输给远程服务。在提供者端,会统一解析请求,根据映射关系找到具体的接口实现,并返回结果。

img

在网络传输的过程中,为了解决tcp的粘包拆包问题,我们还需要约定传输的协议,比如设置对应的协议头和协议体。协议头里会放一些整体的消息长度,这样就可以起到一个断句的效果,避免粘包拆包。因为协议体的内容都是需要反序列化的,所以协议头还会存具体的序列化方式。

另外协议体的反序列化是需要消耗cpu的,有一些请求都已经过期了,我们可以直接拒绝,而不需要浪费反序列化的cpu消耗,像这样的超时时间,我们也可以放在协议头。

img

注册中心

调用者如何知道对应的服务提供方是谁呢?这时候就需要引入一个注册中心来统一管理所有的custom和consumer,常见的像zookeeper,nacos都可以用来作为服务的注册中心。

img

针对某个特定的接口,Consumer会向注册中心订阅所有的Provider的地址。如果中途有一些Provider实例异常下线了,注册中心是感知不到的,会导致Consumer访问到了下线的机器,导致请求失败。所以注册中心会和注册的机器保持心跳检测 来确保注册服务的健康。

服务治理

  • 负载均衡
  • 异常重试
  • 优雅关闭,优雅启动
  • 熔断限流
  • 问题定位,链路追踪

RPC框架有很多,但是一款好的RPC框架,一定需要有服务治理的能力。随着服务的增多,对RPC框架就需要能够支持更多的业务场景。

在有多个服务提供者的时候,调用者如何选择一个进行调用,这里就涉及到了负载均衡,负载均衡会在后续的章节介绍,我们只需要知道负载均衡是在调用者那进行选择的

img

如果一次调用失败,有可能是某台provider的异常,我们需要能够异常重试。dubbo默认能够支持3次的重试。

如果下游的某台服务超时了,会导致上游所有直接,间接依赖这个服务的服务都出现大面积超时,为了避免这种情况,调用端需要引入超时熔断的模块,而服务端为了避免被大量的请求导致系统处理不过来,需要引入限流的模块。

img

随着服务链路变得越来越长,排查一个问题可能需要通知下游的下游,中间间隔很多个服务。这时候需要引入一套链路追踪的能力,标识出一次请求所调用的整个流程。

img

怎么学习

市面上的dubbo源码学习教程比较少,都是一些简单的使用教程。这也是我第一次学习一个框架,没有看视频。

接下来分享我在学习dubbo过程中发现的优质资料吧

1.dubbo官网

首先最推荐的就是去看官方文档,毕竟这是阿里开源的框架,所以中文文档写的已经特别好了。所有的用法包括源码解读都有。自己去github拉一套dubbo的代码,推荐看老版本的代码,这样既保留了最初设计的思想,还不会被其他复杂的新功能看花了眼,我用的是2.6.x的版本。

img

2.极客时间-RPC实战与核心原理

专栏讲的是rpc框架在京东最近十年,架构的升级和演进,看完后,大概了解一个rpc框架最终能为我们提供哪些服务。

3.CSDN博客

img

基本是算是源码伴读了,我跟着看完了整套服务暴露,引用,远程调用的细节。

4.书籍《深入理解apache dubbo与实战》

img

dubbo的经典书籍,也可以搭配着使用

5.源码讲解视频

img

之前一直找不到源码视频,原来都在付费课程中。这是一位粉丝给我分享的,也就几个小时的时间,用视频大概一览dubbo的源码框架,这样对后期自己的阅读能提供很大的帮助。


接下来,就让我们进入为期三周的dubbo之旅吧!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值