gRPC肯定可以克服REST的用例是什么

问题描述 投票:1回答:1

我为最简单的情况编写了简单的基准测试:通过gRPC发送字符串Hello world并在ruby中休息:

# REST example
require 'sinatra'

set :bind, '0.0.0.0'
set :logging, false

get '/' do
  'Hello, world!'
end

gRPC示例基于官方examples

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

class GreeterServer < Helloworld::Greeter::Service

  def say_hello(hello_req, _unused_call)
    Helloworld::HelloReply.new(message: "Hello #{hello_req.name}")
  end
end

将此代码部署到远程服务器并运行1000个请求基准(ab进行休息,并循环客户端对gRPC的请求,并获得51秒vs 53(REST与gRPS)的可比结果)

因此,我得出结论,在这种情况下(响应的数据量很少),gRPC没有任何好处。那么,它们什么时候出现?什么时候数据大小为千字节甚至兆字节?还是gRPC有本质上不同的用例,例如服务器和客户端之间的流式传输和双工数据?

rest grpc
1个回答
0
投票

blog post表示gRPC的性能更好,但难于使用。

我认为改进的性能来自使用协议缓冲区进行数据传输;我认为这意味着数据以二进制格式传输,这意味着当您拥有更多数据(尤其是非字符串数据)时,性能会得到改善。

© www.soinside.com 2019 - 2024. All rights reserved.