编辑推荐: |
本文主要介绍了RPC机制和实现过程、调用具有与本地调用类似的形式、RPC框架的组成、RPC和HTTP概念解析等相关内容。
本文来自于微信 IT技术小屋,由火龙果软件Anna编辑、推荐。 |
|
RPC机制和实现过程
服务实例之间主要通过轻量级的远程调用方式来实现,比如RPC
RPC (Remote Procedure Call,远程过程调用协议)
是一种通过网络从远程计算机程序上请求服务
而不需要了解底层网络技术的协议
RPC是远程过程调用的方式之一
涉及调用方和被调用方两个进程的交互
1984年
Birrell和Nelson在ACM Transactions on Computer Systems期刊上发表了名为“Implementing
remote procedure calls”的论文
RPC远程过程调用是指计算机A上的进程,调用另外一台计算机B上的进程的方法。其中,A上的调用进程被挂起,而B上的被调用进程开始执行对应方法,并将结果返回给A;计算机A接收到返回值后,调用进程继续执行。
RPC让程序之间的远程过程调用具有与本地调用类似的形式
当read 实际是本地调用时
read函数由链接器从依赖库中提取出来接着链接器会将它链接到该程序中虽然read中执行了特殊的系统调用
但调用方并不知道read函数的具体实现和行为
当read 实际是一个远程过程时
调用方程序中需要引入read 的接口定义称为客户端存根(client-stub)
远程过程底层将参数打包成网络消息并发送到远程服务器交由远程服务执行对应的方法
RPC框架的组成
分布式架构所需要的企业内部通信模块
往往采用私有协议来设计和研发
私有协议可以最大程度地降低成本,提升性能,提高灵活性与效率
协议包括的必要字段与主要业务负载字段
通信功能特性的支持
协议的升级机制
RPC和HTTP概念解析
RPC和HTTP都是微服务间通信较为常用的方案之一RPC和HTTP并不完全是同一个层次的概念
RPC是远程过程调用
其调用协议通常包括序列化协议和传输协议·序列化协议有基于纯文本的XML和JSON
二进制编码的Protobuf和 Hessian
传输协议是指其底层网络传输所使用的协议
比如TCP、HTTP
可以看出HTTP是RPC的传输协议的一个可选方案
为什么传输层协议会使用自定义的 TCP协议呢?
首先想到HTTP是无状态、无连接的
所以每次进行通信都要建立和断开连接这会影响通信效率
实际上HTTP协议是支持连接池复用的
能建立一定数量的连接并且保持连接不会断开不用频繁建立和断开连接
因此连接问题并不是优先选择自定义TCP协议的真正原因
自定义TCP协议可以灵活地对协议字段进行定制减少非必要字段的传输,减少网络开销
而HTTP协议则包含了过多无用的信息
HTTP/1.0 200OK
Content-Type: text/plainContent-Length: 137582
Expires: Thu, 05 Dec 202016:00:00 GMT
Last-Modified: Wed, 5 August 2020 15:55:28 GMTServer:
Apache/1.3.3.7(Unix) (Red-Hat/Linux)
html>
<body>
Hello World
</body>
</html> |
常见的PRC框架
目前流行的开源 RPC框架有
阿里巴巴的 Dubbo
Google的gRPC
Facebook的Thrift
Twitter的 Finagle等
Go RPC:
原生支持的RPC远程调用机制
非常适合你了解和学习RPC的入门框架
gRPC:
基于HTTP2.0协议的支持众多常见的编程语言提供了强大的流式调用能力
Thrift:
主要是一个跨语言的服务开发框架具有高性能和稳定性的特点
小结
介绍了微服务之间的远程方法调用过程
然后讲解了RPC框架的组成
最后还简单介绍了目前主流的RPC框架 |