标签: grpc

为什么在协议缓冲区3中删除了必需和可选项

我最近使用gRPCproto3,我已经注意到,requiredoptional在新的语法已被删除.

有人会解释为什么在proto3中删除了必需/可选项?这样的约束似乎对于使定义具有鲁棒性是必要的.

语法proto2:

message SearchRequest {
  required string query = 1;
  optional int32 page_number = 2;
  optional int32 result_per_page = 3;
}
Run Code Online (Sandbox Code Playgroud)

语法proto3:

syntax = "proto3";
message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
}
Run Code Online (Sandbox Code Playgroud)

protocol-buffers grpc proto3

182
推荐指数
4
解决办法
7万
查看次数

我可以使用null请求或响应定义grpc调用吗?

proto3中的rpc语法是否允许空请求或响应?

例如,我想要相当于以下内容:

rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);
Run Code Online (Sandbox Code Playgroud)

或者我应该只创建一个null类型?

message Null {};

rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
Run Code Online (Sandbox Code Playgroud)

protocol-buffers grpc

93
推荐指数
2
解决办法
4万
查看次数

GRPC与REST有何不同?

我正在阅读GRPC的这个解释,这个图表很有意思:

在此输入图像描述

传输层如何工作?如果它在网络上......为什么它被称为RPC?更重要的是,这与为服务层实现API的REST有何不同(客户端中的类具有发出http请求的方法)?

rest grpc

90
推荐指数
3
解决办法
5万
查看次数

使用HTTP/2,gRPC(HTTP/2)比REST快吗?

目标是引入更好的延迟网络吞吐量的传输和应用层协议.目前,该应用程序使用RESTHTTP/1.1,我们遇到高延迟.我需要解决这个延迟问题,我可以使用gRPC(HTTP/2)REST/HTTP2.

HTTP/2:

  1. 单TCP连接
  2. 二进制而不是文本
  3. 标头压缩
  4. 服务器推送

我知道上述所有优点.问题1:如果我使用REST/HTTP/2,我相信,与使用HTTP/1.1的REST相比,我将获得显着的性能提升,但这与gRPC(HTTP/2)相比如何?

我也知道gRPC使用proto buffer,这是用于在线路上传输结构化数据的最佳二进制序列化技术.Proto缓冲区还有助于开发一种与语言无关的方法.我同意这一点,我可以使用graphQL在REST中实现相同的功能.但我关注的是序列化问题:问题2:HTTP/2实现这个二进制特性时,使用proto缓冲区是否在HTTP/2之上提供了额外的优势?

问题3:流媒体,双向用例方面,gRPC(HTTP/2)如何与(REST和HTTP/2)进行比较?

有这么多的博客/视频出在与像(REST和HTTP/1.1)比较GRPC(HTTP/2)互联网这个.如前所述,我想知道比较GRPC(HTTP/2)和(REST与HTTP/2)的差异和好处.

rest http google-cloud-platform http2 grpc

72
推荐指数
2
解决办法
2万
查看次数

如何将gRPC定义的API引入Web浏览器

我们想为我们的gRPC微服务构建一个Javascript/HTML gui.由于浏览器端不支持gRPC,我们考虑使用web-socket连接到node.js服务器,该服务器通过grpc调用目标服务.我们很难找到一个优雅的解决方案来做到这一点.特别是,因为我们使用gRPC流来推动我们的微服务之间的事件.似乎我们需要第二个RPC系统,只是为了在前端和node.js服务器之间进行通信.这似乎是很多开销和必须维护的额外代码.

有没有人有这方面的经验,或者知道如何解决这个问题?

javascript protocol-buffers node.js microservices grpc

71
推荐指数
5
解决办法
3万
查看次数

protobuf vs gRPC

我尝试了解protobuf和gRPC以及如何使用它们.你能帮我理解一下:

  • 考虑到OSI模型是什么,例如Protobuf在第4层?
  • 通过消息传递思考如何"流动"gRPC做什么是protobuf错过的?
  • 如果发件人使用protobuf,服务器可以使用gRPC还是gRPC添加只有gRPC客户端可以提供的内容?
  • 如果gRPC可以进行同步和异步通信,Protobuf只是用于编组,因此与状态无关 - 真或假?
  • 我可以在前端应用程序中使用gRPC而不是REST或GraphQL吗?

我已经知道 - 或者假设我这样做 - 那:

的Protobuf

  • 用于数据交换的二进制协议
  • 由谷歌设计
  • 使用生成的"结构"类似客户端和服务器上的描述来取消 - / - 马歇尔消息

GRPC

  • 使用protobuf(v3)
  • 再次来自谷歌
  • RPC调用的框架
  • 也使用HTTP/2
  • 可以进行同步和异步通信

对于已经使用该技术的人,我再次认为这是一个简单的问题.我仍然会感谢你对我有耐心并帮助我.我也非常感谢网络深入研究这些技术.

networking protocol-buffers grpc

57
推荐指数
3
解决办法
1万
查看次数

grpc和websocket之间有什么区别?哪一个更适合双向流连接?

我想以双向流方式开发客户端 - 服务器应用程序.

什么是更合适的技术 - grpc或websocket?

rest rpc websocket http2 grpc

44
推荐指数
2
解决办法
2万
查看次数

grpc和zeromq比较

我想比较一下grpc与zeromq及其模式的某些功能:我想创建一些比较(功能集) - 不知何故 - 0mq是"更好"的套接字 - 但无论如何 - 如果我应用0mq模式 - 我得到可比的'框架'我认为 - 这里0mq似乎更灵活......

主要要求是:

  • 节点之间的异步req/res通信(inproc或远程)
  • 灵活的消息路由
  • 负载均衡支持
  • 有据可查

有任何想法吗?

谢谢!

messaging zeromq grpc

36
推荐指数
2
解决办法
1万
查看次数

将Spring Boot与gRPC和Protobuf一起使用

有没有任何使用gRPC和Spring Boot的例子或想法的人?

spring protocol-buffers spring-boot grpc

35
推荐指数
3
解决办法
3万
查看次数

无法使用 pip install grpcio 安装 grpcio

在我的 Windows 机器上使用 pip install grpcio 安装 grpcio 时出现错误。我在这里阅读 - https://github.com/grpc/grpc/issues/17829,这可能是由于 setuptools 版本中的错误。我将我的 setuptools 升级到最新版本,即 41.0.1 。仍然得到相同的构建错误。它不会发生在任何其他包中。我试过在我的笔记本电脑上重新安装 pip 和 python。我附上我的错误

Building wheels for collected packages: grpcio
Building wheel for grpcio (setup.py) ... error
ERROR: Complete output from command 'c:\python27\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'c:\\users\\s\\appdata\\local\\temp\\pip-install-ge5zhq\\grpcio\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel
-d 'c:\users\s\appdata\local\temp\pip-wheel-txjhlh' --python-tag cp27:
  ERROR: Found cython-generated files...
  running bdist_wheel
  running build
  running build_py
  running build_project_metadata
  creating python_build
  creating python_build\lib.win-amd64-2.7
  creating python_build\lib.win-amd64-2.7\grpc
  copying src\python\grpcio\grpc\_auth.py -> python_build\lib.win-amd64-2.7\grpc
  copying src\python\grpcio\grpc\_channel.py -> …
Run Code Online (Sandbox Code Playgroud)

build python-2.7 grpc

35
推荐指数
3
解决办法
3万
查看次数