RPC框架有哪些?

RPC框架有哪些?-mikechen

有许多流行的RPC框架可用于构建分布式系统和服务间的通信,以下是一些常见的7大RPC框架@mikechen

分布式RPC

分布式RPC(Remote Procedure Call)是指在分布式系统中,通过网络调用远程计算机上的函数或过程,就像调用本地函数一样。

 

分布式RPC原理

分布式(RPC)通信工作流程,如下图所示:

RPC框架有哪些?-mikechen

主要包含,如下步骤:

  1. 客户端发起请求: 客户端调用本地的代理对象,这个代理对象负责与远程服务器通信,客户端不需要了解底层的网络通信细节,只需调用本地的接口。
  2. 序列化请求: 代理对象将客户端的请求(包括:方法名、参数……等)序列化为网络可以传输的格式,如:JSON、XML或二进制格式…等等。
  3. 发送请求: 序列化后的请求通过网络发送到远程服务器。
  4. 服务器接收请求: 服务器接收请求后,将请求数据反序列化,恢复成原始的调用信息(比如:方法名、参数….等)。
  5. 执行请求: 服务器调用实际的服务方法,处理请求,并将结果返回。
  6. 序列化响应: 服务器将结果序列化为网络可以传输的格式。
  7. 发送响应: 序列化后的响应通过网络发送回客户端。
  8. 客户端接收响应: 客户端接收响应后,将响应数据反序列化,恢复成原始的返回结果,并将结果返回给调用者。

 

分布式RPC主流框架

1.gRPC

gRPC是Google开源的高性能RPC框架,基于Protocol Buffers进行序列化,支持多种编程语言。

gRPC支持多种编程语言,包括Java、C++、Python等,并提供了强大的代码生成工具。

gRPC基于HTTP/2协议,具有高效的双向流、多路复用和头部压缩等特性。

提供了多种调用方式,包括简单RPC、服务器流式RPC、客户端流式RPC和双向流式RPC。

 

2.Apache Thrift

Thriftt是一个RPC框架(RPC是远程过程调用),与Dubbo类似,最初由Facebook开发,后面进入Apache开源项目。

Thrift架构,如下图所示:

RPC框架有哪些?-mikechen

Thrift支持多种编程语言,包括C++、Java、Python等,并提供了代码生成工具。

Thrift使用自定义的IDL(接口定义语言)来定义服务和数据类型,支持多种数据传输格式,如二进制、JSON和压缩格式。

提供了多种传输协议,包括TCP、HTTP和Zlib压缩协议等,可根据需求进行选择。

 

3.Apache Dubbo

阿里巴巴开源的高性能RPC框架,支持服务治理和多种协议,适用于Java生态系统。

Dubbo主要包含如下几个核心组件:

RPC框架有哪些?-mikechen

Dubbo支持多种协议,包括dubbo、REST、HTTP和WebService等,可根据需求进行选择。

提供了丰富的服务治理功能,如负载均衡、集群容错、动态路由和服务降级等。

 

4.Spring Cloud Netflix

基于Netflix OSS开发的Spring Cloud组件,包括Ribbon、Feign和Hystrix等,提供了基于HTTP的RPC风格的服务调用和负载均衡等功能。

 

5.ZeroMQ

快速消息传递库,提供了轻量级的消息传递机制,可以用于构建RPC系统。

 

6.Apache Avro

Apache基金会的开源数据序列化系统,也可以用于构建RPC框架。

 

7.gRPC-Web

gRPC的Web版本,允许在Web浏览器中直接使用gRPC进行跨域通信。

这只是一小部分常见的RPC框架,每个框架都有其独特的特点和适用场景,选择适合你的项目需求、编程语言和生态系统的RPC框架非常重要。

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

评论交流
    说说你的看法