外贸网站推广收费,做企业网站一般多少钱,深入浅出wordpress下载,邢台网站网站建设gRPC 为什么这么快#xff1f; 本文转自 公众号 ByteByteGo#xff0c;如有侵权#xff0c;请联系#xff0c;立即删除 RPC#xff08;Remote Procedural Call, 远程过程调用#xff09;之所以被称为 remote#xff0c;因为在微服务架构下#xff0c;RPC 可以实现远程服…gRPC 为什么这么快 本文转自 公众号 ByteByteGo如有侵权请联系立即删除 RPCRemote Procedural Call, 远程过程调用之所以被称为 remote因为在微服务架构下RPC 可以实现远程服务之间的通信。从服务调用者的角度来看它就像一个本地函数调用。
下图说明了 gRPC 的数据流。 步骤 1客户前端发出 REST 调用。请求体通常为 JSON 格式。步骤 2-4订单服务gRPC 客户端接收 REST 调用对其进行转换然后向支付服务发出 RPC 调用。gPRC 将 client stub 编码为二进制格式并将其发送到底层传输层。步骤 5gRPC 通过 HTTP2 在网络上发送数据包。由于采用了二进制编码和网络优化gRPC 据说比 JSON 快 5 倍。步骤 6 - 8支付服务gRPC 服务器接收来自网络的数据包解码后调用服务器应用程序。步骤 9 - 11结果从服务器应用程序返回经过编码后发送到传输层。步骤 12 - 14订单服务接收数据包、解码并将结果发送给客户端应用程序。
和广泛用于前后端通信的 REST 相比gRPC 普遍用于服务间通信。并且REST 不是一个协议它只是一个基于 HTTP 协议的设计范式。gRPC 针对传输层和数据编解码都进行了优化使得它的效率更高。
虽然 RPC 调用在微服务中被广泛采用神书 DDIA (Designing Data-Intensive Applications) 中列举了一些 RPC 的局限性
本地函数调用的结果是可预测的而 RPC 需要经过网络传输数据在中途可能因为各种原因丢失。RPC 调用有可能超时编写程序时需要考虑该情况。重试一个失败的 RPC 调用有可能造成数据重复需要考虑幂等。由于传输数据时需要序列化和反序列化RPC 在传输复杂对象时会不太方便。
正是因为这些原因让远程调用看上去像是一个本地调用的编程思想值得商榷。开发者在使用 RPC 时需要有针对性地进行容错处理。