手写RPC(二) 碎碎念

什么是RPC?

远程过程调用,既然是远程,那一定是跨机器的,即服务的调用者和提供者不在同一台机器(当然,你非要把他们放在一台机器也没问题),数据的交换需要经过网络传输。
在这里插入图片描述
我们知道网络传输的是二进制数据,即 01,因此发起远程调用时,必须把数据转化为二进制(序列化)才能通过网络传输,服务提供者收到数据以后需要还原数据(反序列化)才能知道真正传输的数据,然后调用方法实现,返回结果给调用方(返回结果时同样要进过序列化反序列化的过程)。

RPC框架隐藏底层网络通信的复杂性,屏蔽远程调用跟本地调用的区别,让我们更专注于业务逻辑。

写RPC框架需要什么基础知识?

  1. java的基本语法(因为我只会java);
  2. 网络编程的知识;
  3. 代理的基本知识;

有了这些基础知识你就可以写一个乞丐版的RPC框架了,都是你所知道的基础的知识,即使这些知识你都会,你真的能写一个RPC出来吗?我相信能给出肯定答案的人一定不多。因为之前的我就是这样,这些基础知识都知道,甚至能讲出原理,但是真正要把他们组合起来实现一个RPC的时候,我才发现,无处下手!在这里插入图片描述

好在我看了不少大神写rpc的经验以及示例代码,终于让我有信心来完成这样一次 “壮举” 。定个小目标,先写出一个乞丐版,能完成基本的远程调用。
在这里插入图片描述

系列文章传送门如下:
手写RPC(一) 絮絮叨叨
手写RPC(三) 基础结构搭建
手写RPC(四) 核心模块网络协议模块编写 ---- netty服务端
手写RPC(五) 核心模块网络协议模块编写 ---- 自定义协议
手写RPC(六) 核心模块网络协议模块编写 ---- 实现编解码器
手写RPC(七) 核心模块网络协议模块编写 ---- 实现客户端
手写RPC(八) provider、consumer 实现
手写RPC(九) 测试
手写RPC(十) 优化
关于 LengthFieldBasedFrameDecoder 不得不说的事

猜你喜欢

转载自blog.csdn.net/hxj413977035/article/details/121541121