总结
在本章中,我们介绍了使用社区项目(如 protoc-gen-validate
和 go-grpc-middleware
)所能带来的关键功能。我们看到,借助这些工具,我们可以在 Proto
文件中编码请求验证逻辑,这样可以减少代码的臃肿,并为我们的 API 所有端点提供一致的错误消息。
接下来,我们了解了什么是中间件以及如何创建中间件。我们从重构身份验证和日志拦截器开始,发现通过使用 go-grpc-middleware
,我们可以专注于拦截器的实际逻辑,而不必处理大量的样板代码。
随后,我们看到如何从我们的 API 中暴露追踪数据。我们使用了 OpenTelemetry 和 Prometheus 来收集来自 gRPC API 的数据,并通过 HTTP 服务器将其暴露出去。
然后,我们学习了如何在我们的 API 上应用速率限制。这对于防止恶意行为者或有缺陷的客户端过度加载服务器非常有用。我们使用了令牌桶算法,并应用了一个现有的速率限制器实现。
最后,我们还看到如何在客户端使用拦截器,特别是通过使用重试中间件。这样,我们可以根据错误代码重试调用,设定最大重试次数,并可选择使用指数回退。
在下一章中,我们将讨论 gRPC API 的开发生命周期,包括如何确保其正确性,如何调试它们,以及如何部署它们。