gRPC学习笔记(二)——相关特性

截止时间(deadline)

在以前接触的通信框架中,一般是通过超时时间(timeout)来指定客户端应用程序等待完成的时间(超出该时间后会以异常结束)。

与之不同的是,在 gRPC 中使用截止时间(deadline)。截至时间以请求开始的绝对时间来表示(尽管API将它们表示为持续时间的偏移),发起请求的应用程序设置截止时间,整个请求链需要在截止时间之前进行响应,否则会抛出异常。

截止时间和超时时间都是为了防止请求产生阻塞,造成大量请求挂起耗尽服务资源的情况。与超时时间不同的是,可以用到请求链的整个生命周期,而不必为每个请求单独设置。

gRPC 中是没有默认的截至时间的,这意味着如果客户端程序在开发时没有指定截止时间,那么它有可能会无限地等待自己请求的响应。(在实际实现上可能各种语言会设置一个默认截止时间,但由于 grpc 允许多个服务串行调用的特性,这一般也是一个很大的数值)。因此建议在开发 gprc 程序时设置截止时间。

取消

在一些场景下,我们还可以主动取消 gRPC 请求,同样可以避免让客户端一直等待。一旦取消 grpc 通信,就不能再进行消息传递,而且一方已经取消的消息也会传递到另一方。

错误处理

当发起 gPRC 调用时,客户端会接收成功状态的响应或者带有对应错误状态的错误。在编写客户端应用程序时,需要处理所有潜在的错误和错误条件。编写服务端应用程序也需要处理错误,并生成适当的错误状态码。

gRPC 中定义了一组专用状态码,具体如下。

gRPC状态码 gRPC信息 含义
0 OK 成功
1 CANCELLED 操作已被取消
2 UNKNOWN 未知错误
3 INVALID_ARGUMENT 客户端参数非法
4 DEADLINE_EXCEEDED 操作超过了截止时间
5 NOT_FOUND 请求实体未找到
6 ALREADY_EXISTS 客户端试图创建的实体已存在
7 PERMISSION_DENIED 调用者没有权限执行特定操作
8 RESOURCE_EXHAUSTED 资源已耗尽
9 FAILED_PRECONDITION 操作被拒绝,系统没有处于执行操作所需状态
10 ABORTED 操作被中止
11 OUT_OF_RANGE 操作超出了合法的范围
12 UNIMPLEMENTED 该操作未实现
13 INTERNAL 内部错误
14 UNAVAILABLE 服务当前不可用
15 DATA_LOSS 数据丢失或损坏
16 UNAUTHENTICATED 客户端没有进行操作的合法认证凭证

多路复用(multiplexing)

gRPC 允许在同一个 gRPC 服务端运行多个 gRPC 服务,也允许多个客户端存根(stub)使用同一个客户端连接,这种功能叫做多路复用(multiplexing)。

元数据(metadata)

在 gRPC 中信息通过远程方法的参数传递,但是有时候一些与业务上下文无关的数据我们并不希望放到参数中,这时候就要用的 gRPC 中的元数据,它的作用和 HTTP 中的报文头有些类似,可以用键-值对的形式存放一些数据。

拦截器(interceptor)

gRPC 中可通过拦截 RPC 执行,满足特定的需求,如日志、认证等,这会使用一种名为拦截器的扩展机制。

gRPC 中的拦截器按通信模式可以分为一元拦截器和流拦截器,按照使用的地方可以分为客户端拦截器和服务端拦截器。

需要注意的是,并非所有语言都支持 gRPC 拦截器,每种语言的拦截器实现也有差别。

安全性

gRPC 基于 HTTP/2 通信协议,支持使用TLS进行单向或双向加密。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容