0%

gRPC 中已经内置了 retry 功能,可以直接使用,不需要手动来实现,本文主要记录使用 gRPC 实现自动重试功能。

gRPC NameResolver 根据 name-system 选择对应的解析器,用以解析调用时提供的服务器名,最后返回具体地址列表(IP+端口号)。

前面的章节实现的 gRPC 示例 Client/Server 之间的通信都是明文传输的,数据很容易被监听,甚至篡改。其实 gRPC 是鼓励开发者使用安全的通信的,只是在开始的章节中,客户端在创建连接时,使用 grpc.WithInsecure() 这个 Option 使 gRPC 以 Insecure 的方式连接。

本节主要介绍为 gRPC 添加 TLS 支持的过程,关于 TLS 的内容,请自行搜索相关资料。

gRPC 提供了 interceptor (拦截器) 功能,功能类似 middleware 。 拦截器可以用于处理一些公共的或者需要在业务开始前处理的工作。

gRPC 的 metadata (元信息) 类似于 HTTP 的 Header ,只是 gRPC 的 metadat 的 value 是一个数组。 HTTP 的 Header 生命周周期是一次 HTTP 请求;gRPC 的 metadata 的生命周期是一次 RPC 调用。

前文的示例是 gRPC 的 Unary RPC , 即客户端发起一次 Request、服务端响应一次 Response ,这种方式适合传输结构化数据很小的场景,当数据量大或者需要不断传输数据时候,应用应该使用流式RPC( Stream RPC ) ,它允许应用边传输数据边处理。

Linux shell 中截取字符串的方式有以下几种,可以跟据 shell 的场景自行使用。