本周系统设计复习:

  • JWT 简单解释
  • API 设计的 5 大支柱
  • 计算机内存如何工作
  • 顶级 Kubernetes 扩展策略
  • 招聘:顶级 AI 初创公司和 AI 职位

JWT 组成

JWT 或 JSON Web Tokens 是一个开放标准,用于在双方之间安全传输信息。它们广泛用于认证和授权。

JWT 由三个主要组件组成:

1. 头部(Header)

每个 JWT 携带一个头部,指定签名 JWT 的算法。它用 JSON 格式编写。

2. 负载(Payload)

负载由声明和用户数据组成。有不同类型的声明,如注册、公共和私有声明。

3. 签名(Signature)

签名是使 JWT 安全的东西。它通过获取编码的头部、编码的负载、秘密密钥和算法并签名它来创建。

JWT 签名方法

JWT 可以用两种不同方式签名:

1. 对称签名(Symmetric Signatures)

它使用单个秘密密钥进行签名令牌和验证它。相同的密钥必须在签名 JWT 的服务器和验证它的系统之间共享。

2. 非对称签名(Asymmetric Signatures)

在这种情况下,私钥用于签名令牌,公钥用于验证它。私钥安全地保存在服务器上,而公钥可以分发给任何需要验证令牌的人。

API 设计的 5 大支柱

API 是现代系统的骨干。但以正确方式设计它们也很重要。

以下是开发者在设计 API 时应考虑的一些事项:

1. 接口(The Interface)

API 设计关注定义 API 的输入和输出。例如,定义 CRUD 操作如何暴露给用户或客户端。

2. API 范式(API Paradigms)

API 可以遵循不同的范式构建,每个都有自己的协议和标准集。一些选项是 REST、GraphQL 和 gRPC。

3. API 中的关系(Relationships in API)

API 经常需要在各种实体之间建立关系。例如,用户可能有多个与其账户相关的订单。API 端点应反映这些关系以获得更好的客户端体验。

4. 版本控制(Versioning)

修改 API 端点时,适当的版本控制和向后兼容支持很重要。

5. 速率限制(Rate Limiting)

速率限制用于控制在一定时间框架内用户可以向 API 发出的请求数量。这对维护 API 的可靠性和可用性至关重要。

计算机内存如何工作

这是一个简单的分解,显示数据如何通过系统从输入到处理到存储。

  1. 数据通过输入源进入 如键盘、鼠标、摄像头或远程系统。

  2. 永久存储保存你的系统文件、应用和媒体 包括硬盘、USB 驱动器、ROM/BIOS 和基于网络的存储。

  3. RAM 是你计算机的工作空间 包括物理内存和虚拟内存,临时存储你正在使用的数据和程序。

  4. 缓存内存更靠近 CPU 分为 Level 1 和 Level 2。它帮助加速访问频繁使用的数据。

  5. CPU 寄存器是最快和最小的内存单元 处理器直接使用它们几乎立即执行指令。

内存金字塔越高,存储越快越小。

Kubernetes 扩展策略

1. 水平 Pod 自动扩展(HPA)

水平 Pod 自动扩展器基于观察到的 CPU 利用率、内存使用或自定义指标自动扩展 Deployment、ReplicaSet 或 StatefulSet 中的 Pod 数量。

2. 垂直 Pod 自动扩展(VPA)

基于应用需求,VPA 调整分配给单个 Pod 的资源,如 CPU 和内存。此方法基于工作负载指标动态更改 Pod 资源设置。

3. 集群自动扩展

集群自动扩展器自动调整 Kubernetes 集群中的节点数量。它与云提供商交互以基于需求添加或移除节点。这对维护平衡集群很重要。

4. 预测性自动扩展

预测性自动扩展使用机器学习预测未来资源需求。它帮助 Kubernetes 通过预期工作负载需求调整资源。

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP164: JWT Simply Explained

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。