背景
看了一篇自己动手写RPC框架的博客,觉得通过造轮子来学习的方式很好。
预备知识
1.进程间通信的方式 2.为什么
Q:What is Serialization?
Q:什么是序列化
// 附录1 A: 为了把内存中的对象进行网络传输和持久化存储,需要把内存对象转换为字节数组的过程. The string (an in-memory object) abc would be serialized as 0x61 0x62 0x63 (ASCII) or 0x00 0x61 0x00 0x62 0x00 0x63 (UTF16)
Q:为什么要转换为字节数组
A:因为网络传输和持久化存储的方式都是IO,IO的基本单位都是字节数组,所以必须转换为字节数组。
Q:什么是反序列化
A: 把网络字节数组或持久存储中的字节数组,还原为内存中对象的过程.
Q:为什么需要序列化
// 附录2 A:
-
序列化是为网络传输和持久化存储,而这两者的方式都是IO,IO支持的数据格式只有字节数组. 所以当要传输或存储内存对象时,都需要把内存对象转换字节数组。
-
对象转成字节数组的时候就制定一种规则
立项
假设,现在你有1个进程
What:什么是RPC
Why:为什么需要RPC
你想想,如果没有 RPC 框架,那你要怎么调用另外一台服务器上的接口呢?
主要内容
Go的几种RPC实现
RPC通信过程基本流程: 序列化-编码-解码-反序列化
RPC通信过程代码流程
附录
1.What is Serialization? 2.为什么要序列化? 3.Go net/rpc 包的深度解读和学习 4.这里有一篇,Java系列的RPC框架,是基于Netty搭建网络模块的: 一起写RPC框架(三)RPC网络模块的搭建一 网络传输模型
原创文章转载请注明出处: 自己动手写RPC(一)-需求篇