凌云的博客

行胜于言

每周总结 2024-01-12

分类:grpc| 发布时间:2025-01-12 11:34:00

概述

本周主要学习内容有:

gRPC go 基础教程[译]

主要讲了如何构建一个 go 写的简单的 gRPC 客户端和服务器,并演示了常见的四种 gRPC 方法调用:

  • 简单 RPC 调用
  • 服务度流式调用,客户端发送一个消息,然后读取服务端的多个消息
  • 客户端流式调用,客户端发送多个消息给服务端,然后获取服务端返回的一个返回
  • 双向流式调用,客户端和服务端都可以向对方发送多个消息

通过双向流式调用,可以实现服务端主动向客户端发起请求的场景,当然前提是需要双方维持这么一个双向流,并且请求只能包装成这个双向流的消息类型,如果需要客户端能响应服务端主动发起的多种请求,则需要根据消息内容进行处理。

gRPC FAQ[译]

描述了 gRPC 的常见概念,比如什么是 gRPC,发音是什么,优势之类的常见问题和答案。

JSON Web Token(JWT)[译]

这篇文件翻译自 RFC-7519 详细描述了如何生成和解析 JWT,通过这篇文章可以尝试自己实现 JWT 库,或者在使用现有 JWT 库时避免常见的错误。

Proto 最佳实践[译]

讲解了使用 proto 的最佳实践,避免踩坑

API 最佳实践[译]

本文主要是针对通过 protobuf 设计 API 的最佳实践。

这里有一个最佳实践我觉得不仅仅针对 proto: 尽量少定义没有延续标记的分页 API, 主要私下是设计具有分页的 API 时,不要暴露分页标记给客户端,而是维护对客户端透明的内部结构,要获取下一页时客户端只需要将这个内部结构传回服务端就好,这样做后续要调整分页逻辑时只需要服务端自己修改就可以了。

1-1-1 最佳实践[译]

1-1-1 最佳实践是让每个 proto_library 和 .proto 文件尽可能小,理想情况是:

  • 一个 proto_library 构建规则
  • 一个 .proto 源文件
  • 一个顶级实体 (message, enum, or extension)