简述网站开发的5个步骤,网站开发和嵌入式开发,oa系统网页版,成品网站超市源码手撕RPC——前言 一、RPC是什么#xff1f;二、为什么会出现RPC三、RPC的原理3.1 RPC是如何做到透明化远程服务调用#xff1f;3.2 如何实现传输消息的编解码#xff1f; 一、RPC是什么#xff1f; RPC#xff08;Remote Procedure Call#xff0c;远程过程调用#xff… 手撕RPC——前言 一、RPC是什么二、为什么会出现RPC三、RPC的原理3.1 RPC是如何做到透明化远程服务调用3.2 如何实现传输消息的编解码 一、RPC是什么 RPCRemote Procedure Call远程过程调用是一种用于在不同的计算机之间进行通信的技术允许一个程序调用另一个程序中的函数或方法就像调用本地函数一样而无需程序员显式地编写通信代码。 二、为什么会出现RPC 在企业开发中随着业务复杂度的提高单体应用服务不再能满足需求于是都会采用分布式框架随之而来的问题就是单体应用服务被拆分成多个独立部署的服务他们之间如何通信呢这里就要用到RPC了通过使用RPC客户端可以远程调用位于其他服务器上的方法函数就像调用本地方法一样。 RPC框架解决在分布式架构中各个服务之间的网络通信问题的框架。 三、RPC的原理 我们首先从RPC的调用流程入手然后对各个流程涉及到的一些重要技术再做深入探讨有些没讲到的技术会在后续文章中结合项目进行讲解。 具体流程如下
Client以本地调用方式调用服务Client Stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体Client Stub找到服务地址并将消息发送到服务端Server Stub收到消息后进行解码Server Stub根据解码结果调用本地的服务本地服务执行并将结果返回给Server StubServer Stub将返回结果打包成消息并发送至消费方Client Stub接收到消息并进行解码服务消费方得到最终结果
3.1 RPC是如何做到透明化远程服务调用 通过动态代理模式在执行该方法的前后对数据进行封装和解码等让用于感觉就像是直接调用该方法一样殊不知我们对方法前后都经过了复杂的处理。 3.2 如何实现传输消息的编解码 通俗来说在客户端和服务端通信的过程中客户端向服务端发送方法调用请求服务端接收到请求后在本地调用方法调用结束后再向客户端发送响应消息。 所以我们就要自己来封装消息对象的数据结构以便于双方通信的进行而我们在进行rpc调用时不可能是直接在网络中传输消息对象的网络中的数据都是以字节流方式来传输的所以我们就需要对这些对象进行编解码这就要用到数据序列化和反序列化技术了。
序列化把对象转换为字节序列的过程称为对象的序列化也就是编码的过程。 反序列化把字节序列恢复为对象的过程称为对象的反序列化也就是解码的过程。