了解RPC:
RPC(Remote Procedure Call Protocol)——远程过程调用协议:
一般用于实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地资源一样,通过网络传输去访问远端系统资源。
描述:
通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式(C/S)。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
RPC框架实现的架构原理:
Client Code :客户端调用方代码实现,负责发起RPC调用,为调用方用户提供使用API。
Seriallzation/Deseraillzation:负责对RPC调用通过网络传输的内容进行序列化与反序列化,不同的RPC框架有不同的实现机制。主要分为文本与二进制两大类。文本类别的序列化机制主要有XML与JSON两种格式。二级制类别的序列化机制常见的有看Java原生的序列化机制,以及Hession、protobuf、Thrift、Avro、Kryo、MessagePack等,不同的序列化方式在可读性、码流大小、支持的数据类型及性能等方面都存在较大的差异,需要用户根据自己的实际情况进行甄别与筛选。
Stub Proxy:可以看作是一种代理对象,屏蔽RPC调用过程中复杂的网络处理逻辑,使得RPC调用透明化,能够保持与本地调用一样的代码风格。
Transport:作为RPC框架底层的通信传输模块,一般通过Socket在客户端与服务端之间传递请求与应答消息。
Server Code:服务端服务业务逻辑具体的实现。
常见RPC框架:Spr