首页 > 其他分享 >grpc

grpc

时间:2024-06-07 09:46:02浏览次数:20  
标签:调用 grpc gRPC abort context 客户端

  1. rpc使服务之间的方法调用像本地一样,感知不到网络通信的存在。

  2. rpc是基于tcp协议的,但grpc是基于http2协议的。http2的好处是公开通用。

  3. rpc主要有两个工作,序列化(对象转换为二进制,用于网络传输),编解码(被调用方收到数据包,需要知道他的方法名,输入参数在数据包的起始位置等)

  4. grpc中函数中的context参数是啥意思

    在 gRPC 中,函数中的context参数是用于传递上下文信息的对象。它提供了一种在不同的函数调用之间共享状态、传递截止时间、取消信号以及其他相关信息的方式。 context参数通常被用作第一个参数传递给 gRPC 服务方法。

    通过context,可以实现以下功能:

    • 截止时间控制:可以设置请求的截止时间,当超过截止时间时,gRPC 框架可以自动取消请求。
    • 取消请求:可以通过context发送取消信号,通知正在进行的请求取消操作。
    • 传递元数据:可以在context中添加键值对形式的元数据,这些元数据可以在服务端和客户端之间进行传递。
    • 共享状态:可以在context中存储和共享一些与请求相关的状态信息。 context的使用使得 gRPC 服务能够更好地处理并发请求、超时情况和取消操作,同时也方便了在不同函数之间传递相关的上下文信息。
  5. context.abort()

    context.abort() 是 gRPC 框架中用于终止 RPC(Remote Procedure Call)调用的方法。它可以在服务器端或客户端使用,用于在出现错误或异常情况时,主动中断正在进行的 RPC 调用,并向对方发送一个错误状态码和可选的详细信息。 以下是 context.abort() 的一般用法:

    1. 在服务器端,当服务器在处理 RPC 调用时遇到错误或异常情况,可以调用 context.abort() 来终止该调用。这将导致客户端收到一个错误响应,并可以根据错误状态码进行相应的处理。
    2. 在客户端,当客户端发现与服务器的连接出现问题或 RPC 调用超时等情况时,也可以调用 context.abort() 来中断调用。 通过使用 context.abort(),可以在 gRPC 通信中及时处理错误情况,并提供更明确的错误反馈。这样可以帮助开发者更好地处理异常情况,增强系统的健壮性和可靠性。

标签:调用,grpc,gRPC,abort,context,客户端
From: https://www.cnblogs.com/qbxyzzjw/p/18236539

相关文章

  • windows下python源码编译构建grpc【填各种坑】
    背景首先这是巨坑,pipinstallgrpcio和pipinstallgrpcio_tools的方式,因为公司的库里没有,且申请入库复杂,因此只能通过源码构建。思路第一步,应该是要去找grpc的源码,公司是有源码的,也可以在PIPY上找,比如我需要1.41.1的grpc版本,就如下地址https://pypi.org/project/......
  • gRPC入门学习之旅(九)
    gRPC入门学习之旅目录 gRPC入门学习之旅(一)gRPC入门学习之旅(二)gRPC入门学习之旅(三)gRPC入门学习之旅(四)gRPC入门学习之旅(七) 3.10、客户端编译生成GRPC类1.在“解决方案资源管理器”中,使用鼠标左键选中项目名称“Demo.Grpc.Common”,然后单击鼠标右键,在弹出......
  • Golang GRPC 环境 问题
    生成文件执行protoc--go_out=.--go_opt=paths=source_relative--go-grpc_out=.--go-grpc_opt=paths=source_relativeservice.proto 报下列错处理方法1.'protoc-gen-go'不是内部或外部命令,也不是可运行的程序或批处理文件。a.检查gopath目录(%GOPATH%\)的bin文件夹,是否有......
  • 云原生周刊:K8s 上的 gRPC 名称解析和负载平衡
    开源项目推荐KrakenKraken是一个基于P2P的Docker注册表,专注于可扩展性和可用性。它专为混合云环境中的Docker镜像管理、复制和分发而设计。借助可插拔的后端支持,Kraken可以轻松集成到现有的Docker注册表设置中作为分发层。E2EFramework这个项目是一个专门用于Kube......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——高性能的 gRPC
    远程过程调用RPC——高性能的gRPC gRPC,这一由Google推出的高性能、开源、通用RPC框架,凭借其众多引人注目的特性,已成为业界瞩目的焦点。它基于HTTP/2协议标准设计开发,并采用ProtocolBuffers作为默认的数据序列化协议,广泛支持多种编程语言。gRPC不仅简化了服务的精确定义,而且......
  • Etcd开启grpc请求耗时监控
    针对各种类型grpc请求耗时统计场景,etcd提供监控数据。#etcd容器增加环境变量env:-name:ETCD_METRICSvalue:extensivecurl-shttp://127.0.0.1:2381/metrics|grepgrpc_server_handling_seconds_bucketgrpc_method包含了Alarm/AuthDisable/AuthEnable/Authenticate/......
  • GRPC - Deploying: Envoy proxy
    Installfunc-e: https://func-e.io/func-emakesrunningEnvoy®easyfunc-e(pronouncedfunky)allowsyoutoquicklyseeavailableversionsofEnvoyandtrythemout.Thismakesiteasytovalidateconfigurationyouwoulduseinproduction.Eachtimeyoue......
  • Dockerfile - build zgrpc-go-professionals:client
     FROM--platform=$BUILDPLATFORMalpineasprotocARGBUILDPLATFORM=linux/amd64TARGETOS=linuxTARGETARCH=amd64#downloadtheprotocbinaryfromgithub#Weunzipthefileinto/usr/local.Noticethatweareextractingboththeprotoc#binary(/bin/pr......
  • Dockerfile - build zgrpc-go-professionals:server
     FROM--platform=$BUILDPLATFORMalpineasprotocARGBUILDPLATFORM=linux/amd64TARGETOS=linuxTARGETARCH=amd64#downloadtheprotocbinaryfromgithub#Weunzipthefileinto/usr/local.Noticethatweareextractingboththeprotoc#binary(/bin/pr......
  • GRPC - grpcurl: interact with gRPC servers
    https://github.com/fullstorydev/grpcurl Install:goinstallgithub.com/fullstorydev/grpcurl/cmd/grpcurl@latest Addcodetoenableserverreflection:import"google.golang.org/grpc/reflection"reflection.Register(s)//sisagrpcserver......