首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

用Golang构建gRPC服务

创建gRPC服务端 首先让我们看一下怎么创建 RouteGuide服务器。有两种方法来让我们的 RouteGuide服务工作: 实现我们服务定义生成的服务接口:做服务实际要做的事情。...首先,让我们看一下最简单的类型 GetFeature,它只是客户端获取一个 Point,并从其 Feature数据库中返回相应的 Feature信息。...客户端流式RPC 现在,让我们看一些更复杂的事情:客户端流方法 RecordRoute,客户端获取点流,并返回一个包含行程信息的 RouteSummary。...(grpcServer, &routeGuideServer{})... // determine whether to use TLSgrpcServer.Serve(lis) 为了构建和启动服务器我们需要...设置gRPC通道后,我们需要一个客户端存根来执行RPC。我们使用 .proto生成的 pb包中提供的 NewRouteGuideClient方法获取客户端存根。

2K20

源码透析gRPC调用原理

导语 gRPC是什么,不用多说了。 gRPC如何用,也不用多说了 。 但是,gRPC是如何work的,清楚的理解其调用逻辑,对于我们更好、更深入的使用gRPC很有必要。...因此我们必须深度解析下gRPC的实现逻辑,在本文中,将分别从客户端和服务端来说明gRPC的实现原理。...其中,greet_client和greet_server文件中分别是grpc客户端和服务端的业务调用代码,包含了一个标准的gRPC调用过程。.... // 创建connection conn, err := grpc.Dial(address, grpc.WithInsecure()) if err !...服务端的调用流程: grpc server graph.jpg 总结 上面的就是关于gRPC调用逻辑的分析,gRPC中的代码十分复杂,本文只涉及了其调用逻辑的分析,在分析展示源码时,省略的一些错误处理或者数据处理的代码

18K126

C++ gRPC 异步 API 实例与优势

原问题: 我正在用 gRPC 构建一个要求高吞吐量的服务。但是我现在用 C++ 同步式 gRPC 编写的程序的吞吐量并不高。...它使用 cq->Next(),不断地完成队列中获取下一个事件,并调用对应的 Proceed() 方法(也就是我们用于处理不同状态的请求的方法)。...ServerContext ctx_; // 客户端接收到了什么 HelloRequest request_; // 向客户端发送回什么 HelloReply reply...所以假设第一个请求正在等待它的回复数据传输完成时,一个新的请求到达了,cq->Next() 可以获得新请求产生的事件,并开始并行处理新请求,而不用等待第一个请求的传输完成 另一方面,同步 API总是会等待请求的完全完成(开始接收到完成回复...最佳性能实践 由 gRPC C++ 性能小注 提供的性能最佳实践是创建与 CPU 核心数量一样多的线程,并为每一个线程使用一个完成队列(CompletionQueue)。

1.2K20

我们为什么 REST 转向 gRPC

我们也是 REST 开始的,但最近我们决定改用 gRPCgRPC是谷歌开发的一个远程调用框架,现在已开源。尽管它已经出现了多年,但网上关于人们为什么要用它或者为什么不用它的信息并不多。...下面的例子与上述的 gRPC API 相当。...这个时候,我们决定试一试 gRPC。要通过 gRPC 发送结果,只需要在.proto 文件中加入 stream 关键字。...开发者的角度来看,这比实现轮询 API 要简单得多。 注意事项 gRPC 也有一些不足之处,不过它们都与相关的开发工具有关,并不是 gRPC 本身的问题。...结论 尽管开发 gRPC API 在前期需要做更多的工作,但拥有清晰的 API 定义和对流式传输的支持对我们来说更重要。在构建新的内部服务时,gRPC 将会是我们的首选。

1.6K60

gRPC安全设计理解双向证书方案

本文主要通过介绍gRPC的双向认证方案,理清证书领域的知识。...利用消息摘要可以保障数据的完整性和一致性,它的特点如下: 单向 Hash 算法,明文到密文的不可逆过程,即只能加密而不能解密; 无论消息大小,经过消息摘要算法加密之后得到的密文长度都是固定的; 输入相同...单向认证的过程,客户端服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下: ?...with the credentials opts := []grpc.ServerOption{grpc.Creds(creds)} // create a gRPC server...默认提供了多种 OAuth 2.0 认证机制,假如 gRPC 应用运行在 GCE 里,可以通过服务账号的密钥生成 Token 用于 RPC 调用的鉴权,密钥可以环境变量 GOOGLE_APPLICATION_CREDENTIALS

2.4K30

一个新实验:使用gRPC-Web浏览器调用.NET gRPC服务

gRPC-Web允许基于浏览器的应用程序(例如JavaScript SPA或Blazor WebAssembly应用程序)调用gRPC。...使用gRPC-Web的新场景 浏览器调用ASP.NET Core gRPC应用程序 –浏览器API无法调用gRPC HTTP / 2。gRPC-Web提供了一个兼容的替代方案。...在积极研究这一问题的同时,gRPC-Web提供了一种有趣的替代方案,可在当今的每个环境中使用。 非.NET Core平台调用gRPC –一些.NET平台HttpClient不支持HTTP / 2。...app.UseEndpoints(endpoints => { endpoints.MapGrpcService().EnableGrpcWeb(); }); } 浏览器调用...大家可以在https://github.com/grpc/grpc-dotnet上添加使用反馈,以确保我们构建出开发人员喜欢并能发挥作用的东西。 谢谢!

1.5K30
领券