我正在读这个explanation of GRPC,这个图表很有意思:
传输层如何工作?如果它在网络上...为什么它被称为RPC?更重要的是,这与为服务层实现API的REST有何不同(客户端中的类具有发出http请求的方法)?
传输层使用HTTP / 2在TCP / IP之上工作 . 它允许更低延迟(更快)的连接,可以利用从客户端到服务器的单个连接(这可以更有效地使用连接,并可以更有效地使用服务器资源 .
HTTP / 2还支持双向连接和异步连接 . 因此,服务器可以有效地与客户端联系以发送消息(异步响应/通知等) .
虽然REST和gRPC都可以生成客户端/服务器存根(使用诸如swagger for REST之类的东西),但REST具有一组有限的主要“函数”调用(或动词):
+-----------+----------------+ | HTTP Verb | CRUD | +-----------+----------------+ | GET | Read | | PUT | Update/Replace | | PATCH | Update/Modify | | DELETE | Delete | +-----------+----------------+
而gRPC则可以定义任何类型的函数调用,包括同步/异步,单向/双向(流)等 .
使用gRPC,客户端调用本地方法 . 对于程序员来说,看起来你正在进行本地调用,但底层(自动生成的客户端存根)会将调用发送到服务器 . 对于服务器来说,它的方法看起来像是在本地调用的 .
gRPC负责所有底层管道并简化编程范例 . 但是,对于一些专门的REST纯粹主义者来说,这看起来似乎过于复杂 . 因人而异
gRPC优于REST的最大优势是它支持HTTP / 2而不是爷爷HTTP 1.1 . 那么HTTP / 2优于HTTP 1.1的最大优点是,'HTTP / 2允许服务器“推送”内容'......
2 回答
传输层使用HTTP / 2在TCP / IP之上工作 . 它允许更低延迟(更快)的连接,可以利用从客户端到服务器的单个连接(这可以更有效地使用连接,并可以更有效地使用服务器资源 .
HTTP / 2还支持双向连接和异步连接 . 因此,服务器可以有效地与客户端联系以发送消息(异步响应/通知等) .
虽然REST和gRPC都可以生成客户端/服务器存根(使用诸如swagger for REST之类的东西),但REST具有一组有限的主要“函数”调用(或动词):
而gRPC则可以定义任何类型的函数调用,包括同步/异步,单向/双向(流)等 .
使用gRPC,客户端调用本地方法 . 对于程序员来说,看起来你正在进行本地调用,但底层(自动生成的客户端存根)会将调用发送到服务器 . 对于服务器来说,它的方法看起来像是在本地调用的 .
gRPC负责所有底层管道并简化编程范例 . 但是,对于一些专门的REST纯粹主义者来说,这看起来似乎过于复杂 . 因人而异
gRPC优于REST的最大优势是它支持HTTP / 2而不是爷爷HTTP 1.1 . 那么HTTP / 2优于HTTP 1.1的最大优点是,'HTTP / 2允许服务器“推送”内容'......