RPC简介
RPC是指远程过程调用,也就是说两台服务器,一个应用部署在其中一台服务器上,想要调用另外一台服务器上应用提供的函数(方法),由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
RPC 采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。
实现两台服务器之间的交互,必须得通过通信协议,RPC的通讯协议实际上是使用TCP/IP协议(可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接),只不过RPC将其进行了封装处理,只需要调用就可以进行连接,不必关心底层,这一点与如今的框架的目的相同(将工作的中心放在了业务流程上)。那么如何找到目标服务器!仅仅通过IP是不行的,因为你无法确定目标服务器是否也同时在为其它端(泛指客户端,web端,也可以是服务端)提供其它服务,所以,需要一个标示,也就是端口,其它端就能够准确无误的找到自己所需要的进程,并通过进程号,找到目标服务,调用其提供的数据。
那么RPC的安全性如何?TCP/IP通信协议是基于二进制的,在内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址(也就是IP+POST)和传输将序列化的二进制发送,而接收方收到请求后,则需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法进行本地调用,然后得到返回值,返回值也需要经过序列化的方式发送,调用方接收到以后,再反序列化,恢复为内存中的表达方式……
使用RPC的优点是,不需要了解底层网络技术的协议,为通信程序之间携带信息数据。在网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。
本片摘录自:https://www.cnblogs.com/guoximing/articles/6030334.html