RPC与REST之间区别

熟悉spring、springboot体系的同学都有接触过REST,但是大家和我一样可能会使用,却没有系统了解过。此篇文章主要梳理了什么是REST、RESTFUL及RPC以及其之间的差别。

什么是GRPC?

RPC

  1. RPC(Remote Procedure Call Protocol) 远程过程调用协议。
  2. RPC是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
  3. RPC主要作用就是不同的服务间方法调用就像本地调用一样便捷。

RPC框架包含4个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根
● 客户端(Client),服务的调用方。
● 服务端(Server),真正的服务提供者。
● 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
● 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法

在这里插入图片描述

REST

REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源,每个资源都有一个唯一的标识符(通常是 URL),客户端通过 URL 访问和操作资源。REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

区别:

在这里插入图片描述

GRPC

GRPC 是一个高性能、开源和通用的 RPC 框架,由 Google 开发并开源。它基于 HTTP/2 标准,使用 Protocol Buffers(protobuf)作为默认的数据序列化和接口描述语言,可以在各种环境中构建分布式系统。GRPC 支持多种编程语言,包括 C、C++、Java、Go、Python、Node.js 等,使得不同语言的应用程序能够相互通信。

优势及特点:

  1. 高性能:gRPC 基于 HTTP/2 协议,利用了其多路复用、流控制、头部压缩等特性,从而提供了更高效的网络通信,可以支持大规模的并发连接和低延迟的通信。
  2. 简单易用:gRPC 使用 Protocol Buffers 来定义服务接口和消息格式,使得开发者可以轻松地定义和维护接口,并生成相应的客户端和服务器端代码。
  3. 跨语言支持:gRPC 支持多种编程语言,可以在不同的语言环境中使用相同的服务接口,使得不同语言的应用程序能够方便地进行通信。

在这里插入图片描述

Protocol Buffers

Protocol Buffers(protobuf)是一种轻量级、高效的数据序列化和接口描述语言,由 Google 开发并开源。它可以用于在不同的应用程序之间进行数据交换和通信。

  1. 高效的数据序列化:Protocol Buffers 使用二进制格式来表示数据,相比于文本格式(如 XML、JSON),二进制格式更加紧凑,传输效率更高,可以减少网络带宽和数据存储空间的消耗。
  2. 跨语言支持:Protocol Buffers 支持多种编程语言,包括 C、C++、Java、Go、Python、JavaScript 等,使得不同语言的应用程序能够方便地进行数据交换和通信。
  3. 自描述性:Protocol Buffers 使用 .proto 文件来定义数据结构和消息格式,这些文件可以被编译成不同编程语言的代码,包括消息类、序列化和反序列化方法等,使得数据结构的定义和使用变得简单和一致。
  4. 高性能:由于 Protocol Buffers 使用了二进制格式和紧凑的数据表示,加上自动生成的代码,使得序列化和反序列化的性能非常高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值