gRPC 环境安装 Mac
由于仓库已经转到 github,命令 go get -u google.golang.org/grpc
已经不能正常工作。
1 | $ brew install libtool |
gPRC Interceptors
当前实现的 Interceptors 包括 Auth/Log/Monitor/Trace 等。(auth, logging , trace,message, validation, retries or monitoring),大本营: https://github.com/grpc-ecosystem/go-grpc-middleware
类型两种:
- UnaryInterceptor
- StreamInterceptor
常见拦截器列表如下:
- Go gRPC Middleware: 提供了拦截器的interceptor链式的功能,可以将多个拦截器组合成一个拦截器链,当然它还提供了其它的功能,所以以gRPC中间件命名。
- grpc-multi-interceptor: 是另一个interceptor链式功能的库,也可以将单向的或者流式的拦截器组合。
- grpc_auth: 身份验证拦截器
- grpc_ctxtags: 为上下文增加
Tag
map对象 - grpc_zap: 支持
zap
日志框架 - grpc_logrus: 支持
logrus
日志框架 - grpc_prometheus: 支持
prometheus
- otgrpc: 支持opentracing/zipkin
- grpc_opentracing:支持opentracing/zipkin
- grpc_retry: 为客户端增加重试的功能
- grpc_validator: 为服务器端增加校验的功能
- xrequestid: 将request id 设置到context中
- go-grpc-interceptor: 解析
Accept-Language
并设置到context - requestdump: 输出request/response
Prometheus 样例如下:
添加了 Zipkin 与 Logger 的代码样例:
client
1 | package main |
server.go
1 | package main |
server 端的产奖配置可以如下:
1 | import "github.com/grpc-ecosystem/go-grpc-middleware" |
分类如下:
Auth
grpc_auth
- a customizable (viaAuthFunc
) piece of auth middleware
Logging
grpc_ctxtags
- a library that adds aTag
map to context, with data populated from request bodygrpc_zap
- integration of zap logging library into gRPC handlers.grpc_logrus
- integration of logrus logging library into gRPC handlers.
Monitoring
grpc_prometheus
⚡ - Prometheus client-side and server-side monitoring middlewareotgrpc
⚡ - OpenTracing client-side and server-side interceptorsgrpc_opentracing
- OpenTracing client-side and server-side interceptors with support for streaming and handler-returned tags
Client
grpc_retry
- a generic gRPC response code retry mechanism, client-side middleware
Server
grpc_validator
- codegen inbound message validation from.proto
optionsgrpc_recovery
- turn panics into gRPC errors