是GRPC真的快于REST?让我们同时开发基于gRPC和REST的微服务,并进行gRPC与REST 性能比较。
我们这里的主要目标是提出一个应用程序–具有2种不同的实现(REST和gRPC),以实现完全相同的功能。正如我们已经讨论过的那样,gRPC非常适合涉及更多聊天性的微服务之间的通信,让我们提出一些增加聊天性的要求–这样我们就可以轻松比较性能差异。
为了简单起见,我们考虑2种服务。一克gregator服务和一个后端服务器。我们的后端服务器基本上是给定数字的平方计算器。也就是说,如果您发送2,它将以结果4进行响应。
由于REST默认情况下是一元的,因此可以将性能与gRPC的一元/阻塞存根进行比较。但是,如果我们使用双向流,性能会如何?从理论上讲,它应该比一元性能好得多!
结论:
以下数据分别为:
CPU利用率、 吞吐量(请求/秒) 50%响应时间 90%响应时间 |
源代码在这里,详细测试过程点击标题见原文。
Java中的gRPC服务器流API源代码可 在此处获得
Java中的gRPC客户端流API源代码可在此处获得。
Java中的gRPC双向流API源代码可 在此处获得。
Java中的反应式gRPC完整的源代码在这里。