RPC是什么
RPC英文全称Remote Procedure Call,在分布式计算中成为远程过程调用,如果涉及面向对象编程,亦可称为远程调用或远程方法调用。 RPC是一种进程间通信的模式,程序分布在不同的地址空间里,如果在同一主机里,RPC可以通过不同的模拟地址空间进行通讯。使用的架构为客户端/服务器(C/S)。
完整的RPC框架
完整的RPC框架主要包括客户端、服务端、注册中心三部分,客户端中有服务发现、调用模块、RPC协议等组件,服务端中有服务暴露、处理程序、线程池、RPC协议等组件。
RPC核心功能
PC协议部分就是RPC的核心功能,其主要组成部分为:客户端、客户端Stub、网络传输模块、服务端Stub、服务端等。 客户端:服务调用方。 客户端Stub:存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,在通过网络传输发送给服务端。 服务端Stub:接收客户端发送过来的请求信息并进行解包,然后在调用本地服务进行处理。 网络传输模块:底层传输,可以是TCP或HTTP.
目前流行的开源RPC框架
目前流行的开源RPC框架有阿里巴巴的Dubbo、Facebook的Thift、Google的gRPC、Twitter的Finagle等。 先重点介绍三种:
-
gRPC:是 Google 公布的开源软件,基于HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。
-
Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。
-
Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是极其鲜明的特色。