在go语言中gRPC中间件浅析及常用gRPC中间件介绍
Go  /  管理员 发布于 1年前   515
gRPC中间件基于前面讲解的拦截器相关概念,它是一组拦截器、辅助、工具的集合,在我们使用 gRPC 开发应用时,往往会使用到各种中间件。
它允许在服务端或客户端以拦截器链条形式应用多个中间件。
因为拦截器经常用来实现一些通用的功能 ,如鉴权认证、日志、监控等,所以使用 gRPC 中间件来实现这些可重用功能是十分合适的。
下面的代码就分别是服务端和客户端使用中间件的例子:
import "github.com/grpc-ecosystem/go-grpc-middleware"
myServer := grpc.NewServer(
grpc.StreamInterceptor(grpc_middleware.ChainStreamServer(
grpc_ctxtags.StreamServerInterceptor(),
grpc_opentracing.StreamServerInterceptor(),
grpc_prometheus.StreamServerInterceptor,
grpc_zap.StreamServerInterceptor(zapLogger),
grpc_auth.StreamServerInterceptor(myAuthFunction),
grpc_recovery.StreamServerInterceptor(),
)),
grpc.UnaryInterceptor(grpc_middleware.ChainUnaryServer(
grpc_ctxtags.UnaryServerInterceptor(),
grpc_opentracing.UnaryServerInterceptor(),
grpc_prometheus.UnaryServerInterceptor,
grpc_zap.UnaryServerInterceptor(zapLogger),
grpc_auth.UnaryServerInterceptor(myAuthFunction),
grpc_recovery.UnaryServerInterceptor(),
)),
)
import "github.com/grpc-ecosystem/go-grpc-middleware"
clientConn, err = grpc.Dial(
address,
grpc.WithUnaryInterceptor(grpc_middleware.ChainUnaryClient(monitoringClientUnary, retryUnary)),
grpc.WithStreamInterceptor(grpc_middleware.ChainStreamClient(monitoringClientStream, retryStream)),
)
常用的中间件介绍及推荐
go-grpc-middleware 项目提供了一些常用的中间件:
认证
grpc_auth - 一个可定制的(通过AuthFunc)身份验证中间件
日志记录
grpc_ctxtags - 将Tag地图添加到上下文的库,数据从请求正文填充
grpc_zap - 将zap日志库集成到 gRPC 处理程序中。
grpc_logrus - 将logrus日志库集成到 gRPC 处理程序中。
grpc_kit - 将go-kit/log日志库集成到 gRPC 处理程序中。
grpc_grpc_logsettablegrpclog.LoggerV2 - 一个允许在运行时替换记录器的包装器(线程安全)。
监控
grpc_prometheus - Prometheus 客户端和服务器端监控中间件
otgrpc - OpenTracing客户端和服务器端拦截器
grpc_opentracing - OpenTracing客户端和服务器端拦截器,支持流式处理和处理程序返回的标签
otelgrpc - OpenTelemetry客户端和服务器端拦截器
客户端中间件
grpc_retry - 一个通用的 gRPC 响应代码重试机制,客户端中间件
服务端中间件
grpc_validator - 来自.proto选项的代码生成入站消息验证 grpc_recovery - 将恐慌转化为 gRPC 错误 ratelimit - 限流
自定义中间件
如果上面提供的中间件不满足你的需求,该如何定制中间件呢,就是使用前面讲解的拦截器来实现。
相关文章
https://github.com/grpc-ecosystem/go-grpc-middleware
https://pkg.go.dev/github.com/grpc-ecosystem/go-grpc-middleware
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号