• 带HTTP2的JSON RPC和grpc之间有什么区别?
    我不喜欢同时做很多事情的工具。因此,对我来说,GRPC似乎比Kubernetes开销大。 GRPC实际上是结合了两件事的工具:扩展的Protobuf(服务支持)和HTTP2。 我读了很多文章说使用GRPC可以提高性能。而且有两个原因 使用了protobuf,它比json或xml小。 GRPC使用HTTP2作为传输协议 这是主要部分:protobuf和HTTP2是独立的项目,工具,无论如何。有了这种理解,我可以说GRPC就是结合了几种不同的工具,例如kubernetes结合了docker和orchest...
  • 使用C ++的Grpc异步双向客户端
    我在客户端和服务器之间使用双向grpc。我想在客户端和服务器上实现异步比迪,即客户端打开一个流并开始向服务器发送任意消息,而另一个线程继续接收服务器响应。下面的示例演示了服务器端异步bidi https://groups.google.com/forum/m/#!topic/grpc-io/DuBDpK96B14。 有没有人在客户端尝试过异步比迪? 最佳答案 在https://grpc.io/docs/tutorials/async/helloasync-cpp/上有一个针对客户端和服务器的代码实验室...
  • gRPC是否提供用户定义的连接上下文
    在我过去使用的其他RPC实现中,有一个上下文句柄,服务器可以使用该句柄来关联上下文。然后将此上下文句柄传递给rpc方法。在gRPC中有这样的概念吗?我看到了元数据,但在整个连接中都没有粘性。 我们正在尝试使上下文与连接相关联。因此,一旦建立连接,我们就可以保证该上下文在服务器端可用。 gRPC如何建议这样做?
  • Protobuf-c客户端通信Grpc Go Server收到来自客户端错误的虚假问候
    我正在使用主要包含C代码的旧代码库。我有一个使用Grpc Gateway并行运行的GRPC GO服务器。 存根是使用Protobuf-c创建的,而来自C代码的客户端存根是使用Protobuf-c-rpc完成的 使用了与RPC调用示例中提到的完全相同的示例 从日志中可以看到我的客户端已在公开的GRPC端口中与GRPC服务器连接。 但是,当服务调用foo__dir_lookup__by_name(服务名称)发生时,我可以在GRPC Go服务器中看到以下日志。 {"level":"info","ts":15736...
  • 我可以使用空请求或响应定义grpc调用吗?
    proto3中的rpc语法是否允许空请求或响应? 例如我想要以下内容: rpc Logout; rpc Status returns (Status); rpc Log (LogData); 还是我应该创建一个空类型? message Null {}; rpc Logout (Null) returns (Null); rpc Status (Null) returns (Status); rpc Log (LogData) returns (Null); 最佳答案 Kenton在下面的评论是合...
  • GRPC与REST有何不同?
    我正在阅读GRPC的解释,此图很有趣: 传输层如何工作?如果通过网络...为什么将其称为RPC?更重要的是,这与为服务层(客户端中具有发出http请求的方法的类)实现API的REST有何不同? 最佳答案 传输层使用TCP / IP之上的HTTP / 2进行工作。它允许较低的延迟(更快)的连接,可以利用从客户端到服务器的单个连接(这可以更有效地利用连接,并可以更有效地利用服务器资源。 HTTP / 2还支持双向连接和异步连接。因此,服务器可以有效地与客户端联系以发送消息(异步响应/通知等)。 尽管RES...
  • gRPC(HTTP / 2)是否比使用HTTP / 2的REST更快?
    目标是引入一种传输和应用程序层协议,该协议的延迟和网络吞吐量都更好。当前,该应用程序将REST与HTTP / 1.1结合使用,并且我们遇到了高延迟。我需要解决此延迟问题,并且愿意使用gRPC(HTTP / 2)或REST / HTTP2。 HTTP / 2: 多路复用 单TCP连接 二进制而不是文本 标头压缩 服务器推送 我知道上述所有优点。问题1:如果我将REST与HTTP / 2一起使用,我可以肯定,与REST与HTTP / 1.1相比,我将获得显着的性能提升,但是与gRPC(HTTP / 2)相...
  • 如何将gRPC定义的API引入网络浏览器
    我们想为我们的gRPC-microservices构建一个Javascript / HTML gui。由于浏览器端不支持gRPC,因此我们考虑使用Web套接字连接到node.js服务器,该服务器通过grpc调用目标服务。 我们很难找到一个完美的解决方案来做到这一点。特别是,由于我们使用gRPC流在微服务之间推送事件。 似乎我们需要第二个RPC系统,仅用于在前端和node.js服务器之间进行通信。这似乎有很多开销,必须维护其他代码。 有没有人有做过这样的事情的经验或有解决办法的想法? 最佳答案 编辑:自...
  • gRPC- Go和Java的一次HelloWorld
    都说grpc是跨语言的一个rpc框架,当团队内部有多种流行编程语言时,那么grpc可以为他们提供通信,今天我们就通过一个Hello World来看看Java和Go是怎么通信的,一起实践吧,只有亲身实践才能更好的掌握,理解。下文所有程序源代码地址如下https://github.com/sunpengwei1992/java_grphttps://github.com/sunpengwei1992/go_common/tree/master/grpc我们以Go作为服务端,Java作为客户端Go实现服务端准备好...
  • protobuf与gRPC
    我尝试了解protobuf和gRPC以及如何使用两者。您能帮我了解以下内容吗? 考虑到OSI模型,例如第4层的Protobuf是什么? 通过消息传输来思考gRPC在protobuf遗漏的情况下如何进行“流程”? 如果发送者使用protobuf,则服务器可以使用gRPC还是gRPC添加仅gRPC客户端可以提供的内容? 如果gRPC可以实现同步和异步通信,则Protobuf仅用于编组,因此与状态无关-是还是假? 可以在通讯的前端应用程序中使用gRPC代替REST或GraphQL吗? 我已经知道-或假设我知...
  • grpc和websocket有什么区别?哪个更适合双向流连接?
    我想以双向流方式开发客户端-服务器应用程序。 什么是更合适的技术-grpc或websocket? 最佳答案 gRPC实际上并不是比较的相关部分,而是gRPC使用HTTP / 2,可以肯定地将其与WebSockets进行比较。 https://www.infoq.com/articles/websocket-and-http2-coexist 本文对它们进行了很好的概述。本质上,HTTP / 2是在后台使用服务器推送的客户端/服务器,因此,例如,您可以发出请求并仅停留在该连接上以侦听更新而无需轮询。 尽...
  • grpc和zeromq比较
    我想比较一下grpc与zeromq及其模式的功能:我想创建一些比较(功能集)-以某种方式-0mq是“更好的”套接字-但无论如何-如果我应用0mq模式-我我想得到类似的“框架”-在这里0mq似乎更加灵活... 主要要求是: 节点之间的异步请求/响应通信(inproc或远程) 灵活的消息路由 负载平衡支持 有据可查 有任何想法吗? 谢谢! 最佳答案 节点之间的异步请求/响应通信(inproc或远程) 这两个库都允许同步或异步通信,具体取决于实现通信的方式。有关gRPC的信息,请参见以下页面:h...
  • 将Spring Boot与gRPC和Protobuf一起使用
    是否有人将gRPC与Spring Boot结合使用有任何示例或想法? 最佳答案 如果仍然适合您,我在这里创建了gRPC spring-boot-starter。 grpc-spring-boot-starter会自动配置并运行启用了@GRpcService的bean的嵌入式gRPC服务器。 最简单的例子: @GRpcService(grpcServiceOuterClass = GreeterGrpc.class) public static class GreeterService implemen...
  • 【译】gRPC vs HTTP APIs
    本文翻译自ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者Edison Zhou。这篇文章将gRPC与基于JSON的HTTP API进行了比较,讨论了gRPC的优缺点,以及何时可以使用gRPC构建应用程序。  gRPC需要HTTP/2,这是HTTP的主要版本,与HTTP 1.x相比,它具有显着的性能优势:二进制成帧和压缩。例如,服务器可能会在超时后取消正在进行的gRPC/HTTP/数据库请求。  gRPC-Web并非支持所有gRPC的功能。可读性不高使用JSON的HTTP API请求以文本形式发送,并且适合利于阅读和创建。gRPC消息的大小始终小于同等级别的JSON消息。尽管gRPC不能完全替代HTTP API,但在某些情况下可以提供更高的生产率和性能优势。
  • 测试gRPC服务
    我想测试用Go编写的gRPC服务。我使用的示例是grpc-go存储库中的Hello World服务器示例。 protobuf的定义如下: syntax = "proto3"; package helloworld; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} } // The reques...
  • 微服务2.0技术栈选型手册,值得架构师借鉴
    基于近年在微服务基础架构方面的实战经验和平时的学习积累,我想总结并提出一些构建微服务2.0技术栈的选型思路,供各位在一线实战的架构师、工程师参考借鉴。另外,对于不同业务体量和团队规模的公司,技术选型标准往往是不同的,创业公司的技术选型和BAT级别公司的技术选型标准可能完全不同。
  • 微服务 2.0 技术栈选型手册
    基于近年在微服务基础架构方面的实战经验和平时的学习积累,我想总结并提出一些构建微服务2.0技术栈的选型思路,供各位在一线实战的架构师、工程师参考借鉴。Spring Boot/Cloud[附录12.1]由于Spring社区的影响力和Netflix的背书,目前可以认为是构建Java微服务的一个社区标准,Spring Boot目前在github上有超过20k星。
  • TensorFlow Servering C/S通信约束
    虽然TensorFlow对C/S的通信约束做了说明,但感觉介绍的并不是特别的清晰易用,需要自己根据使用示例,并结合文档进行梳理和总结。参考mnist_client.py模型标识在Serving的模型保存输出代码中并没有显示的声明。模型标识实际上是在指定模型输出路径,和设置TF Serving "target"时指定的。参考:https://www.tensorflow.org/serving/serving_basic2. 签名标识可以粗糙的理解为,用来指定需要调用模型中的哪个方法。gRPC和RESTfull API在通信约束上是一致的。
公众号
关注公众号订阅更多技术干货!