HTTP 与 RPC 接口区别

RPC 接口

什么是RPC

RPC 的全称是 Remote Procedure Call Protocol,中文名是远程过程调用协议。

通俗点讲就是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。

官方的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC架构

HTTP 与 RPC 接口区别_第1张图片
一个完整的 RPC 架构里面包含了四个核心的组件,分别是Client、Server、Client Stub以及Server Stub。

  • 客户端(Client),服务的调用方。
  • 服务端(Server),真正的服务提供方。
  • 客户端存根(Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • 服务端存根(Server Stub),接受客户端发送过来的消息,将消息解包,并调用本地的方法。

同步调用和异步调用

同步调用:就是客户端等待调用执行完成并返回结果。
异步调用:接受客户端不等待调用执行完成返回的结果,不过依然可以通过回调函数等接收到返回结果的通知。

流行的RPC框架

Thrift
thrift 是一个facebook开源的软件框架,用来进行可扩展且跨语言的服务的开发,包括C++, Java, Python等多种编程语言。

Dubbo
是阿里提供的一个分布式服务框架,以及 SOA 治理方案。其功能主要包括:高性能 NIO 通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等

Spring Cloud
提供了搭建分布式系统及微服务常用的工具,满足了构建微服务所需的所有解决方案。

gRPC
一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用( RPC )系统。

HTTP 接口

HTTP(Hypertext Transfer Protocol)是一种应用层协议,它主要用于在 Web 浏览器和服务器之间传递数据。HTTP 的核心是客户端向服务器发起请求,并等待服务器响应。在 Web 应用中,HTTP 主要用于传输 HTML、CSS、JavaScript 和其他 Web 资源。

在接口设计中,HTTP 接口通常使用 RESTful 架构。RESTful 架构是一种设计风格,它使用 HTTP 方法(GET、POST、PUT、DELETE 等)和 URI(Uniform Resource Identifier)来定义资源和操作。通过使用 RESTful 架构,HTTP 接口可以具有良好的可读性、可维护性和可扩展性。

HTTP 接口和 RPC 接口的区别

  1. 通信协议不同:HTTP 使用文本协议,RPC 使用二进制协议。
  2. 调用方式不同:HTTP 接口通过 URL 进行调用,RPC 接口通过函数调用进行调用。
  3. 参数传递方式不同:HTTP 接口使用 URL 参数或者请求体进行参数传递,RPC 接口使用函数参数进行传递。
  4. 接口描述方式不同:HTTP 接口使用 RESTful 架构描述接口,RPC 接口使用接口定义语言(IDL)描述接口。
  5. 性能表现不同:RPC 接口通常比 HTTP 接口更快,因为它使用二进制协议进行通信,而且使用了一些性能优化技术,例如连接池、批处理等。此外,RPC 接口通常支持异步调用,可以更好地处理高并发场景。

HTTP 接口和 RPC 接口的应用场景

HTTP 接口适用于 Web 应用程序和浏览器之间的通信。它通常用于传输 HTML、CSS、JavaScript 和其他 Web 资源,以及 RESTful 风格的 API 服务。

RPC 接口适用于分布式系统之间的通信。它可以在多种编程语言之间进行通信,支持多种协议和数据格式。RPC 接口通常用于处理高并发、高吞吐量的场景,例如大型的分布式计算、大数据处理等。
HTTP 接口和 RPC 接口的相同之处在于,它们都是用于接口通信的协议。它们都需要定义接口、参数和返回值等信息,并通过网络进行通信。此外,它们都支持多种数据格式的编解码,可以根据需求进行灵活的选择。

HTTP 接口和 RPC 接口的技术发展趋势

随着互联网技术的不断发展,HTTP 接口和 RPC 接口都在不断发展和演进。

在 HTTP 接口方面,GraphQL 是一种新的查询语言,它允许客户端定义所需的数据格式和结构,从而减少网络传输的数据量。GraphQL 逐渐成为一种比 RESTful 更灵活、更高效的 API 设计方式。

在 RPC 接口方面,gRPC 是一种新的高性能远程过程调用框架,它使用 Protocol Buffers 作为默认的序列化协议,支持多种编程语言和平台。gRPC 提供了高效的序列化和传输协议,以及代码生成和服务发现等功能,可以大大提高 RPC 接口的开发效率和性能。


感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。

你可能感兴趣的:(http,rpc,网络协议)