如何为考试报名创建一个既美观又兼容多设备的悦生活建设银行网站?
摘要:考试报名费悦生活建设银行网站,自适应的网站,哪里找专业做网站的公司,网站建设与维护视频教程一、什么是RPC框架? RPC,全称为Remote Procedure Call&
考试报名费悦生活建设银行网站,自适应的网站,哪里找专业做网站的公司,网站建设与维护视频教程一、什么是RPC框架#xff1f;
RPC#xff0c;全称为Remote Procedure Call#xff0c;即远程过程调用#xff0c;是一种计算机通信协议。 比如现在有两台机器#xff1a;A机器和B机器#xff0c;并且分别部署了应用A和应用B。假设此时位于A机器上的A应用想要调用位于B机…一、什么是RPC框架
RPC全称为Remote Procedure Call即远程过程调用是一种计算机通信协议。 比如现在有两台机器A机器和B机器并且分别部署了应用A和应用B。假设此时位于A机器上的A应用想要调用位于B机器上的B应用提供的函数或是方法由于A应用和B应用不在一个内存空间里面所以不能直接调用此时就需要通过网络来表达调用的方式和传输调用的数据。也即所谓的远程调用。
二、RPC框架的实现原理
主要有以下几个步骤
1、建立通信
首先要解决通讯的问题即A机器想要调用B机器首先得建立起通信连接。主要是通过在客户端和服务器之间建立TCP连接远程过程调用的所有相关的数据都在这个连接里面进行传输交换。
通常这个连接可以是按需连接需要调用的时候就先建立连接调用结束后就立马断掉也可以是长连接客户端和服务器建立起连接之后保持长期持有不管此时有无数据包的发送可以配合心跳检测机制定期检测建立的连接是否存活有效多个远程过程调用共享同一个连接。
2、服务寻址
解决寻址的问题即A机器上的应用A要调用B机器上的应用B那么此时对于A来说如何告知底层的RPC框架所要调用的服务具体在哪里呢
通常情况下我们需要提供B机器主机名或IP地址以及特定的端口然后指定调用的方法或者函数的名称以及入参出参等信息这样才能完成服务的一个调用。比如基于Web服务协议栈的RPC就需要提供一个endpoint URI或者是从UDDI服务上进行查找。如果是RMI调用的话还需要一个RMI Registry来注册服务的地址。
3、网络传输
3.1、序列化
当A机器上的应用发起一个RPC调用时调用方法和其入参等信息需要通过底层的网络协议如TCP传输到B机器由于网络协议是基于二进制的所有我们传输的参数数据都需要先进行序列化Serialize或者编组marshal成二进制的形式才能在网络中进行传输。然后通过寻址操作和网络传输将序列化或者编组之后的二进制数据发送给B机器。
3.2、反序列化
当B机器接收到A机器的应用发来的请求之后又需要对接收到的参数等信息进行反序列化操作序列化的逆操作即将二进制信息恢复为内存中的表达方式然后再找到对应的方法寻址的一部分进行本地调用一般是通过生成代理Proxy去调用, 通常会有JDK动态代理、CGLIB动态代理、Javassist生成字节码技术等之后得到调用的返回值。
4、服务调用
B机器进行本地调用通过代理Proxy之后得到了返回值此时还需要再把返回值发送回A机器同样也需要经过序列化操作然后再经过网络传输将二进制数据发送回A机器而当A机器接收到这些返回值之后则再次进行反序列化操作恢复为内存中的表达方式最后再交给A机器上的应用进行相关处理一般是业务逻辑处理操作。
通常经过以上四个步骤之后一次完整的RPC调用算是完成了另外可能因为网络抖动等原因需要重试等。
三、为什么需要RPC
主要就是因为在几个进程内应用分布在不同的机器上无法共用内存空间或者在一台机器内通过本地调用无法完成相关的需求比如不同的系统之间的通讯甚至不同组织之间的通讯。此外由于机器的横向扩展需要在多台机器组成的集群上部署应用等等。
四、RPC支持哪些协议
最早的CORBA、Java RMI WebService方式的RPC风格 Hessian, Thrift甚至Rest API。
