本周系统设计复习:
- API vs. SDK!有什么区别?
- 开源 AI 栈
- Cookies vs. Sessions vs. JWT vs. PASETO
- 参加系统设计面试前你应该知道的算法
- 6 大负载均衡算法
- TikTok 如何管理 20 万文件的前端 MonoRepo?
开源 AI 栈
你不需要花一大笔钱来构建 AI 应用。最好的 AI 开发者工具是开源的,一个优秀的生态系统正在演进,使 AI 对每个人都可访问。
这个开源 AI 栈的关键组件如下:
1. 前端(Frontend)
要构建漂亮的 AI UI,像 NextJS 和 Streamlit 这样的框架非常有用。此外,Vercel 可以帮助部署。
2. 嵌入和 RAG 库(Embeddings and RAG libraries)
嵌入模型和 RAG 库,如 Nomic、JinaAI、Cognito 和 LLMAware,帮助开发者构建准确的搜索和 RAG 功能。
3. 后端和模型访问(Backend and Model Access)
对于后端开发,开发者可以依赖像 FastAPI、Langchain 和 Netflix Metaflow 这样的框架。像 Ollama 和 Huggingface 这样的选项可用于模型访问。
4. 数据和检索(Data and Retrieval)
对于数据存储和检索,有几个选项可用,如 Postgres、Milvus、Weaviate、PGVector 和 FAISS。
5. 大语言模型(Large-Language Models)
基于性能基准,开源模型如 Llama、Mistral、Qwen、Phi 和 Gemma 是专有 LLM(如 GPT 和 Claude)的优秀替代方案。
认证方法对比
认证确保只有授权用户才能访问应用的资源。它回答用户身份的问题,即”你是谁?”
现代认证景观有多种方法:Cookies、Sessions、JWTs 和 PASETO。以下是它们的含义:
Cookies 和 Sessions
Cookies 和 sessions 是认证机制,其中 session 数据存储在服务器上,并通过客户端 cookie 引用。
Sessions 非常适合需要严格服务器端控制用户数据的应用。缺点是,sessions 在分布式系统中可能面临可扩展性挑战。
JWT
JSON Web Token(JWT)是一种无状态、自包含的认证方法,将所有用户数据存储在令牌内。JWTs 高度可扩展,但需要小心处理以减轻令牌盗窃风险和管理令牌过期。
PASETO
平台无关安全令牌或 PASETO 通过强制更强的加密默认值和消除算法漏洞改进了 JWT。PASETO 通过避免与错误配置相关的风险简化了令牌实现。
系统设计面试算法
以下是你在参加系统设计面试前应该知道的一些算法。我整理了一个列表并解释了为什么它们很重要。这些算法不仅对面试有用,对任何软件工程师都很有必要理解。
需要记住的一点是,在系统设计面试中,理解”这些算法如何在现实世界系统中使用”通常比实现细节更重要。
图中的星星意味着什么?
按重要性客观排名算法非常困难。我欢迎建议并进行调整。
- 五星:非常重要。努力理解它如何工作以及为什么
- 三星:在某种程度上重要。你可能不需要知道实现细节
- 一星:高级。对高级候选人很好
6 大负载均衡算法
静态算法
轮询(Round robin) 客户端请求按顺序发送到不同的服务实例。服务通常要求是无状态的。
粘性轮询(Sticky round-robin) 这是轮询算法的改进。如果 Alice 的第一个请求去服务 A,后续请求也去服务 A。
加权轮询(Weighted round-robin) 管理员可以为每个服务指定权重。权重较高的服务处理更多请求。
哈希(Hash) 此算法对传入请求的 IP 或 URL 应用哈希函数。请求基于哈希函数结果路由到相关实例。
动态算法
最少连接(Least connections) 新请求发送到并发连接最少的服务实例。
最少响应时间(Least response time) 新请求发送到响应时间最快的服务实例。
TikTok 的 MonoRepo 管理
MonoRepo(单体仓库的简称)是一种软件开发策略,其中单个仓库包含多个项目、库和服务。
MonoRepo 的优点
- 更好的代码共享
- 简化的依赖管理
- 代码库的统一视图
然而,MonoRepo 越大,各种 Git 操作越慢。
TikTok 在其前端 TypeScript MonoRepo 面临类似变化,有 20 万文件。
为处理这个,TikTok 构建了一个名为 Sparo 的工具,优化大型前端 MonoRepo 的 Git 操作性能。
Sparo 显著提高了 Git 操作的性能。一些统计数据如下:
- Git clone 时间:从 40 分钟到仅 2 分钟
- Checkout:从 1.5 分钟到 30 秒
- Status:从 7 秒到 1 秒
- Git commit 时间:从 15 秒到 11 秒
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP146: The Open Source AI Stack。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。