本周系统设计复习:
- 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 的可靠性和可用性至关重要。
计算机内存如何工作
这是一个简单的分解,显示数据如何通过系统从输入到处理到存储。
数据通过输入源进入 如键盘、鼠标、摄像头或远程系统。
永久存储保存你的系统文件、应用和媒体 包括硬盘、USB 驱动器、ROM/BIOS 和基于网络的存储。
RAM 是你计算机的工作空间 包括物理内存和虚拟内存,临时存储你正在使用的数据和程序。
缓存内存更靠近 CPU 分为 Level 1 和 Level 2。它帮助加速访问频繁使用的数据。
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。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。