ByteByteGo 技术面试准备工具包
推出一体化面试准备课程。我们将在ByteByteGo 网站上提供所有书籍。
包含的内容:
-
系统设计面试
-
编码面试模式
-
面向对象设计面试
-
如何写一份好的简历
-
行为面试(即将推出)
-
机器学习系统设计面试
-
生成式人工智能系统设计面试
-
移动系统设计面试
-
更多精彩即将呈现
本周的系统设计复习:
-
Kubernetes Pod 的生命周期
-
CI/CD 管道详解
-
开源 RAG 堆栈
-
一些最流行的版本控制策略
-
适用于生产的数据科学书籍
-
测试金字塔
-
赞助我们
Kubernetes Pod 的生命周期
-
Pod 清单提交给 API 服务器并存储在 etcd 中。
-
调度程序根据资源、亲和性规则为 Pod 选择一个节点,并将 Pod 绑定到该节点。
-
kubelet 通过创建网络命名空间、分配 IP、挂载卷以及根据需要提取图像来准备 Pod。
-
容器从等待状态转为运行状态,由 kubelet 监控健康探测以确保其活跃度和就绪状态。
-
Kubernetes 跟踪 Pod 的高级阶段,从 Pending 到 Running,再到 Succeeded/Failed/Unknown。
-
终止时,Kubernetes 会向 Pod 中的各个容器发送 SIGTERM(如果需要,还会发送 SIGKILL)。
-
终止后,资源将被清理,Pod 详细信息将从 etcd 中删除。
交给你:你还需要添加什么来理解 Kubernetes Pod 生命周期?
CI/CD 管道详解
CI/CD 管道是一种自动化构建、测试和部署软件过程的工具。
它将软件开发生命周期的不同阶段(包括代码创建和修订、测试和部署)集成到一个单一、有凝聚力的工作流程中。
下图说明了一些常用的工具。
开源 RAG 堆栈
-
前端框架:用于构建 RAG 应用的前端界面。一些有用的工具包括 NextJS、VueJS、SvelteKit 和 Streamlit。
-
LLM 框架:LLM 流水线、提示和链的高级编排。其中包括 LangChain、LlamaIndex、Haystack、HuggingFace 和 Semantic Kernel 等工具。
-
LLM:使用大型语言模型生成最终响应。一些开源选项包括 Llama、Mistral、Gemma、Phi-2、DeepSeek、Qwen 等。
-
检索和排序:检索相关块并根据相关性进行排序。Meta FAISS、Haystack Retrievers、Weaviate Hybrid Search、ElasticSearch kNN 和 JinaAI Rerankers 等工具可以提供帮助。
-
向量数据库:存储向量嵌入并支持相似性搜索。常见的选项包括 Weaviate、Milvus、Postgres pgVector、Chroma 和 Pinecone。
-
嵌入模式:使用机器学习将文本/数据转换为向量表示。一些开源工具包括 HuggingFace Transformers、LLMWare、Nomic、Sentence Transformers、JinaAI 和 Cognita。
-
采集/数据处理:提取、清理并准备原始数据,以便进行索引和检索。Kubeflow、Apache Airflow、Apache NiFi、LangChain Document Loads、Haystack Pipelines 和 OpenSearch 等工具可以提供帮助。
交给你:你会将哪个其他开源工具添加到列表中?
最流行的版本控制策略有哪些?
版本控制可帮助开发人员清楚地传达发布变化,无论是针对软件包、API 还是操作系统。
-
语义版本控制 (SemVer):一种版本控制方案,使用 MAJOR.MINOR.PATCH 格式传达有关版本中更改范围的含义。
-
日历版本控制 (CalVer):使用发布日期(年和月)作为版本号来指示发布时间的方案。
-
顺序版本控制:一种简单的编号方法,其中版本按顺序增加,而不编码兼容性细节。
-
API 版本控制:一种将版本嵌入 API 的 URL 路径中以管理和分离重大更改的方法。
交给您:您更喜欢哪种版本控制策略,为什么?
适用于生产的数据科学书籍
我的朋友 Khuyen Tran 写了一本书,名为《生产就绪数据科学》 。如果你正在寻找一本能够弥合快速原型和稳健解决方案之间差距的书,不妨看看。
本书以实际的例子和清晰的解释为特色,帮助您掌握以下技巧:
-
将杂乱的笔记本转换成有组织、可维护的代码,
-
创建跨团队和部署的可重复环境,
-
编写模块化、可重用、可测试的 Python 代码,
-
实施强大的数据验证和错误处理,
-
等等。
请查看 GitHub 存储库,其中包含本书讨论的每个概念的实际实现。
测试金字塔
测试是可靠软件的支柱。测试金字塔是一种被广泛接受的策略,它将测试分为三个关键层:
-
单元测试:这是金字塔的基础。单元测试快速、独立,并且编写和维护成本低。它们测试单个函数、方法或组件。
-
集成测试:这些测试验证组件(例如 API、数据库和外部服务)之间的交互。它们比单元测试慢,并且需要更多设置。
-
端到端测试:这类测试模拟了整个系统从开始到结束的真实用户流程。这类测试的编写和维护成本很高,而且执行速度往往很慢。
随着金字塔的不断攀升,测试开发、执行和维护的成本也会随之增加。
交给您:您认为测试策略中哪一层最有价值,为什么?
赞助我们
将您的产品展示给超过 1,000,000 名技术专业人士。
我们的时事通讯将您的产品和服务直接呈现给重要的受众——数十万工程领导和高级工程师——他们对重大技术决策和大宗采购有影响力。
房间很快订满 – 立即预订
广告位通常提前4周左右售罄。为了确保您的广告能够触达这些极具影响力的受众,请立即发送电子邮件至[email protected] 预订您的广告位。
原文: https://blog.bytebytego.com/p/ep178-the-lifecycle-of-a-kubernetes