企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: * 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 * 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 * 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 下面重点介绍三种: * gRPC:是 Google 公布的开源软件,基于\*\*\*的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 * Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。 * Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是极其鲜明的特色。 **完整的 RPC 框架** ![](https://img.kancloud.cn/70/0e/700e3e38ee4e15683bae962d26281159_651x434.png) 在一个典型 RPC 的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中“RPC 协议”就指明了程序如何进行网络传输和序列化 如下是 Dubbo 的设计架构图,分层清晰,功能复杂: ![](https://img.kancloud.cn/c1/88/c18846e4252d3dbd3ec42195cd2a9ffb_600x449.png) **RPC 核心功能** RPC 的核心功能是指实现一个 RPC 最重要的功能模块,就是上图中的”RPC 协议”部分: ![](https://img.kancloud.cn/ee/a7/eea72921b086dd73f08c727cecee2e39_604x179.png) 一个 RPC 的核心功能主要有 5 个部分组成,分别是:客户端、客户端 Stub、网络传输模块、服务端 Stub、服务端等。 ![](https://img.kancloud.cn/b6/0f/b60fc650e6ee7ed0c314ec07828b4c72_600x358.png) 下面分别介绍核心 RPC 框架的重要组成: * 客户端(Client):服务调用方。 * 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端。 * 服务端存根(Server Stub):接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理。 * 服务端(Server):服务的真正提供者。 * Network Service:底层传输,可以是 TCP 或 HTTP https://developer.51cto.com/art/201906/597963.htm