当前位置:   article > 正文

Dubbo基础_zzo0

zzo0

目录

什么是 RPC

那为什么要有 RPC,HTTP 不好么?

RPC 的原理是什么?

如何设计一个 RPC 框架

从底向上的思路

服务消费者

服务提供者

注册中心

监控运维

小结一下

简单实现一个 RPC 框架

Dubbo 简介

Dubbo的历史

Dubbo的功能

为什么要用 Dubbo?

Dubbo 总体架构

架构的一些注意点

Dubbo 中的 Invoker 概念了解么?

Dubbo 分层架构

SPI

为什么 Dubbo 不用 JDK 的 SPI,而是要自己实现?

Dubbo 为什么默认用 Javassist

那我们如何扩展 Dubbo 中的默认实现呢?

Dubbo 的微内核架构了解吗?

Dubbo 调用过程

服务暴露过程

服务引入的流程

消费过程

Dubbo 序列化协议

Dubbo 支持哪些序列化方式呢?

谈谈你对这些序列化协议了解?


注意:本文参考   Dubbo系列-扬帆起航

绯闻女友想看很久的Dubbo面试题

1w+字的 Dubbo 面试题/知识点总结!(2021 最新版)

什么是 RPC

RPC,Remote Procedure Call 即远程过程调用,远程过程调用其实对标的是本地过程调用,本地过程调用你熟悉吧?

想想那青葱岁月,你在大学赶着期末大作业,正在攻克图书管理系统,你奋笔疾书疯狂地敲击键盘,实现了图书借阅、图书归还等等模块,你实现的一个个方法之间的调用就叫本地过程调用。

你要是和我说你实现图书馆里系统已经用了服务化,搞了远程调用了,我只能和你说你有点东西。

简单的说本机上内部的方法调用都可以称为本地过程调用,而远程过程调用实际上就指的是你本地调用了远程机子上的某个方法,这就是远程过程调用。

所以说 RPC 对标的是本地过程调用,至于 RPC 要如何调用远程的方法可以走 HTTP、也可以是基于 TCP 自定义协议。

所以说你讨论 RPC 和 HTTP 就不是一个层级的东西。

而 RPC 框架就是要实现像那小助手一样的东西,目的就是让我们使用远程调用像本地调用一样简单方便,并且解决一些远程调用会发生的一些问题,使用户用的无感知、舒心、放心、顺心,它好我也好,快乐没烦恼。

那为什么要有 RPC,HTTP 不好么?

这时候面试官就开始追问了。

这个问题其实很有意思,有些面试官可能自己不太清楚,然后以为自己很清楚,所以问出这个问题,还有一种是真的清楚,问这个问题是为了让你跳坑里。

因为 RPC 和 HTTP 就不是一个层级的东西,所以严格意义上这两个没有可比性,也不应该来作比较,而题目问的就是把这两个作为比较了。

HTTP 只是传输协议,协议只是规范了一定的交流格式,而且 RPC 是早于 HTTP 的,所以真要问也是问有 RPC 为什么还要 HTTP。

RPC 对比的是本地过程调用,是用来作为分布式系统之间的通信,它可以用 HTTP 来传输,也可以基于 TCP 自定义协议传输。

所以你要先提出这两个不是一个层级的东西,没有可比性,然后再表现一下,可以说 HTTP 协议比较冗余,所以 RPC 大多都是基于 TCP 自定义协议,定制化的才是最适合自己的。

当然也有基于 HTTP 协议的 RPC 框架,毕竟 HTTP 是公开的协议,比较通用,像 HTTP2 已经做了相应的压缩了,而且系统之间的调用都在内网,所以说影响也不会很大。

RPC 的原理是什么?

为了能够帮助小伙伴们理解 RPC 原理,我们可以将整个 RPC 的 核心功能看作是下面

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/721021
推荐阅读
相关标签