一文搞懂RPC原理

本文详细介绍了RPC(远程过程调用)协议,包括其定义、工作原理、客户端与服务端的交互,以及RPC框架的核心组件。RPC简化了分布式系统之间的通信,使得调用远程服务如同调用本地方法一样便捷。文中提到了各种RPC框架如SpringCloud、Dubbo,并探讨了RPC在服务暴露、远程代理、通信和序列化等方面的关键技术。此外,还讨论了RPC与分布式服务框架的区别以及RPC协议的实现结构。
摘要由CSDN通过智能技术生成

了解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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值