利用 gRPC 实现文件的上传与下载
利用 gRPC 实现文件的上传与下载 某人遇到问题,模型绑定出错导致无法实现导出/下载功能,选择传统Web API解决。文章介绍利用gRPC实现文件上传和下载,定义了Protobuf,展示了上传和下载的实现,指出基于gRPC的上传下载无法直接在浏览器环境下使用,提及Envoy和gRPC-Web的方向。最后提到用传统Web API包装作为替代方案。文章探讨技术实现背后的无解和接受命运的态度,展示了对技术和人生的思考。
gRPC 流式传输极简入门指南
gRPC 流式传输极简入门指南 最近一直在研究 gRPC 的 ServerReflection,这是 gRPC 中提供的反射接口,对于动态调用 gRPC 接口非常有用。作者发现 ServerReflection API 使用了 gRPC 双向流的方式进行交互,类似于服务器推送技术如 WebSocket 和 Server-Sent Events。文章介绍了流式传输的概念,包括 HTTP/2 中的多路复用特性以及 gRPC 中的流式传输类型:客户端流、服务器端流和双向流。具体展示了这些流式传输类型在 gRPC 中的实现方式和对应的代码示例。最后,作者分享了对 gRPC 流式传输的兴趣和探索,强调了在工作中遇到的挑战和探索的乐趣。
浅议非典型 Web 应用场景下的身份认证
浅议非典型 Web 应用场景下的身份认证 在软件行业,存在针对语言、框架、范式、架构等问题的鄙视链。作者提到了编程领域充满着宗教原旨的意味,回顾了自己被轻视的经历。文中探讨了非典型 Web 应用场景下的身份认证,涵盖了 gRPC、SignalR 和 Kafka。针对 gRPC,介绍了身份认证的解决方案;对于 SignalR,讨论了身份认证的需求和解决方案;对于 Kafka,探讨了令牌传递、用户信息获取和处理消息的方式。最后,作者呼吁准备好面对非典型场景,并思考在后疫情时代的应对方式。
gRPC 借助 Any 类型实现接口的泛化调用
gRPC 借助 Any 类型实现接口的泛化调用 在编程中,人们常常在动态与静态、强类型与弱类型等概念上反复权衡。近年来,出现了动态类型如 .NET 中的 dynamic 类型、TypeScript 替代 JavaScript 、Python 增加类型标注等趋势。文章介绍了在 Protobuf 中引入 Any 类型的必要性和用法,以实现泛型接口描述。Any 类型简单包含 type_url 和 value 字段,能够实现不同消息之间的相互转换。在 .NET 中使用 Any 类型时,可以通过 Pack() 、Unpack<T>() 等方法实现消息间的转换。最后,通过自定义 MyAny 类型扩展方法,实现了更灵活的类型处理,探讨了 Protobuf 在泛型场景下的应用,提倡通过 Any 类型构建通用查询接口。文章强调了在动态与静态、强与弱之间取舍的灵活性,并探讨了在实际开发中如何应用 Any 类型处理泛型情景。
gRPC 搭配 Swagger 实现微服务文档化
gRPC 搭配 Swagger 实现微服务文档化 本文探讨了程序员对文档编写的矛盾态度,以及在微服务架构中接口文档的重要性。介绍了使用 protoc-gen-doc 方案生成 Protobuf 格式的 gRPC 服务文档,并提供了 Docker 部署示例。另外,还介绍了整合 Swagger 的方案,通过 GrpcSwaggerProvider 来实现 gRPC 与 Swagger 的结合,使得查阅和调试 gRPC 接口更加便捷。最后,作者分享了对服务治理中接口文档重要性的思考,并总结了两种针对 gRPC 的服务文档化方案的优缺点。
ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理
ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理 在构建以 gRPC 为核心的微服务架构中,作者介绍了通过 Envoy 的 gRPC-JSON Transcoder 功能实现将 gRPC 服务代理成 JSON API 的方案。通过配置 Envoy 过滤器实现 JSON 和 Protobuf 的转换,需要生成服务描述文件,然后配置 Envoy,即可像调用 JSON API 一样调用 gRPC。这种方案已在作者所在公司全面采用,通过 Docker-Compose 编排多个微服务,并通过 Envoy 统一入口。最终实现了 gRPC 与 Web 的无缝对接,为消费 gRPC 服务提供便利。
ASP.NET Core gRPC 打通前端世界的尝试 在构建以 gRPC 为核心的微服务架构过程中,涉及到了 gRPC 的过滤器、健康检查、重试等内容。随着现代前端框架如React、Angular和Vue的兴起,以及前后端分离的趋势,将 gRPC 与前端打通成为一个复杂问题。文章介绍了四种打通 gRPC 和前端的方式:gRPC-Web、gRPC-Gateway、封装 Web API和编写中间件。其中,gRPC-Web提供了通过命令行工具生成强类型客户端代码的方案,而gRPC-Gateway则是将RESTful JSON API转换为gRPC服务的方案。另外,封装 Web API和编写中间件也是解决这一问题的方案。文章最后强调了通过编写中间件的方式,将 gRPC 服务转化为 Web API 的思路,并提供了相关的代码示例。
ASP.NET Core gRPC 集成 Polly 实现优雅重试 在这篇博客中,作者探讨了在构建高可用微服务架构中的`gRPC`客户端重试方案。作者介绍了四种具体实现方式:基于`gRPC RetryPolicy`、基于`HttpClientFactory`、基于`gRPC拦截器`以及基于`CallInvoker`。其中,通过对`CallInvoker`的重写实现了灵活的重试策略,展示了一种更完美的解决方案。作者强调了在探索技术方案时,应先了解官方提供的标准方案,避免不必要的弯路。整体内容信息量丰富,分享了作者在探索重试方案过程中的思考和经验。
ASP.NET Core gRPC 健康检查的探索与实现 本文探索了gRPC服务健康检查的两种实现方式:基于IHostedService和Timer的轮询方案以及基于Consul的服务注册、服务发现、健康检查方案。对于Consul方法,还涉及到客户端负载均衡的原理和实现。此外,还介绍了gRPC客户端负载均衡和gRPC接口测试工具grpcurl和grpcui的使用方法。文章总结了这些内容并鼓励读者参与讨论。
ASP.NET Core gRPC 拦截器的使用技巧分享 gRPC是微软在.NET Core中主推的RPC框架,具有跨语言、高性能、双向流式调用等优点。文章介绍了在.NET Core中使用gRPC拦截器实现日志记录的技巧,包括拦截器类的定义和各种调用方法的重写。通过拦截器实现了对gRPC请求和响应的详细日志记录。同时,展示了如何在服务器端和客户端实现拦截器,以及如何让拦截器生效的方法。文章总结了gRPC拦截器的使用技巧,强调了利用拦截器处理RPC服务调用时的统一处理需求。