12 个架构概念
负载均衡:跨多个服务器分布传入流量确保没有单个节点被压倒。
缓存:在内存中存储频繁访问数据减少延迟。
内容分发网络(CDN):跨地理分布边缘服务器存储静态资产所以用户从最近位置下载内容。
消息队列:通过让生产者入队消息消费者异步处理解耦组件。
发布 - 订阅:使多个消费者能够从主题接收消息。
API 网关:作为客户端请求单一入口点,处理路由、认证、限速率和协议翻译。
断路器:监控下游服务调用并在失败超过阈值时停止尝试。
服务发现:自动跟踪可用服务实例所以组件可以定位和相互动态通信。
分片:基于特定分片键跨多个节点分裂大数据集。
限速率:控制客户端可以在给定时间窗口进行请求数量保护服务免过载。
一致性哈希:以最小化重组当节点加入或离开方式跨节点分布数据。
自动扩展:基于定义指标自动添加或移除计算资源。
2026 年顶级开发者工具
代码编辑器和 IDE
这些工具帮助开发者更高效编写、编辑和调试代码。示例是 Visual Code、IntelliJ IDEA、PyCharm、Cursor、Eclipse 等。
版本控制系统
跟踪代码变化随时间并使团队间协作。示例是 Git、GitHub、Gitlab、Bitbucket、AWS Code Commit 等。
测试工具
帮助确保代码行为如预期通过在到达生产前识别 bug。示例是 JUnit、Selenium、Playwright、Cypress 等。
CI/CD 工具
它们帮助自动化构建和部署代码过程加速交付。示例是 Jenkins、GitHub Actions、Circle CI、Travis CI 和 Code Pipeline。
容器化和编排
帮助打包应用和它们依赖到容器确保它们跨环境一致运行。示例是 Docker、Kubernetes、Podman、Containerd、Rancher 等。
项目管理工具
帮助开发团队计划、组织和跟踪任务开发。示例是 JIRA、Asana、Trello、ClickUp、Notion 等。
API 测试工具
它们帮助测试和验证 API 确保服务间和与外部消费者稳定通信。示例是 Postman、Swagger、Hopscotch、Insomnia 等。
AI 驱动开发者工具
它们主要用于提高开发者生产力有代码建议、错误检测和自动代码生成。示例是 ChatGPT、Claude Code、Cursor、Copilot、Qodo 等。
5 种限速率策略保护系统
限速率保护服务免过载或滥用通过塑造流量匹配容量和通过执行策略一旦请求到达。好限速率优化准确性、可预测性、公平性和低开销,真实系统 trade 一个为另一个。
固定窗口计数器:涉及在当前离散时间桶计数请求并在达到阈值后拒绝。
滑动窗口日志:存储传入请求确切时间戳并仅允许请求如果最后 T 秒保持在限制下。
滑动窗口计数器:代替保持请求时间戳日志,它计算前一个时间窗口加权计数器。当新请求到达,计数器基于权重调整,如果总数低于限制请求允许。
令牌桶:通过以稳定速率添加”令牌”到桶工作。每个请求消耗一个令牌。如果令牌可用,请求立即通过。如果桶空,请求拒绝或延迟。
漏桶:队列请求并以固定排出速率让它们出去。
直播如何工作
直播工作使用一些关键协议如 RTMP、HLS(由 Apple 制造)和 DASH(用于非 Apple 设备)。
逐步过程
步骤 1:摄像机和麦克风记录视频和音频。原始数据发送到服务器。
步骤 2:视频通过移除不必要部分(如分离背景)变小。然后,它转换为标准格式如 H.264,使它更容易通过互联网发送。
步骤 3:视频被切成小部分,通常几秒长。这帮助它在流式传输期间更快加载。
步骤 4:为确保视频在所有种类设备和互联网速度平滑播放,创建多个版本视频在不同质量级别。这称为自适应比特率流式传输。
步骤 5:视频然后发送到附近服务器(边缘服务器)使用 CDN。这减少延迟并帮助数百万人同时观看视频。
步骤 6:观众手机、平板或电脑接收视频,转回完整视频和声音,并在视频播放器播放。
步骤 7 和 8:如果视频需要稍后再次观看,它保存在存储服务器。观众可以在任何想要时重放它。
5 个领导者选举算法供电现代数据库
领导者选举算法在分布式系统重要管理任务、维护一致性和做决策。
Bully 算法:节点有唯一数字 ID,有最高 ID 在通知其他后接管作为领导者。
Ring 算法:节点排列在逻辑环并传递包含它们 ID 消息。最高 ID 节点赢并成为领导者。
Paxos 算法:基于法定共识方法提议者建议值,接受者投票,学习者识别选择领导者。
Raft 算法:节点开始作为跟随者并在没有检测到领导者时成为候选者。第一个获得多数票成为领导者。
Zookeeper 原子广播:使用临时顺序 znode 选举领导者,确保最低编号 znode 持有者是领导者。
CQRS 如何工作
CQRS(命令查询责任分离)分离写(命令)和读(查询)操作为更好可扩展性和可维护性。
如何工作
- 客户端发送命令更新系统状态。命令处理器验证并使用领域模型执行逻辑。
- 变化保存在写数据库,也可以保存到事件存储。事件发出异步更新读模型。
- 投影存储在读数据库。这个数据库最终一致与写数据库。
- 在查询侧,客户端发送查询检索数据。
- 查询处理器从读数据库获取数据,包含预计算投影。
- 结果返回客户端不命中写模型或写数据库。
Docker 如何工作
Docker 架构构建围绕三个主要组件一起工作构建、分发和运行容器。
三个组件
Docker 客户端:这是用户与 Docker 交互接口。它发送命令(如 build、pull、run、push)到 Docker 守护进程使用 Docker API。
Docker 主机:这是 Docker 守护进程运行地方。它管理镜像、容器、网络和卷,并负责构建和运行应用。
Docker 注册表:Docker 镜像存储系统。公共注册表如 Docker Hub 或私有注册表允许拉取和推送镜像。
AWS Lambda 应用模式
AWS Lambda 开创无服务器范式,允许开发者运行代码无需配置、管理或扩展服务器。
实用应用模式
按需媒体转换:每当用户从 S3 请求图像格式不可用,按需转换可以使用 AWS Lambda 完成。
单一来源多数据格式:AWS Lambda 可以与 SNS 工作创建层数据可以在发送到存储层前以所需格式处理。
实时数据处理:创建 Kinesis 流和对应 Lambda 函数处理不同类型数据(点击流、日志、位置跟踪或交易)从你的应用。
变更数据捕获:Amazon DynamoDB 可以集成 AWS Lambda 响应数据库事件(插入、更新和删除)在 DynamoDB 流。
无服务器图像处理:使用 AWS Lambda 以无服务器方式处理和识别图像。与 AWS Step Functions 集成更好工作流管理。
自动存储过程:调用 Lambda 作为存储过程在特定数据库表执行操作前/后触发功能。
容器化解释:从构建到运行时
“构建一次,任何地方运行。“那是容器化承诺,这里是它实际如何工作:
构建流
一切从 Dockerfile 开始,定义你应用如何构建。当你运行 docker build,它创建 Docker 镜像包含:
- 你代码
- 需要依赖
- 必要库
这个镜像可移植。你可以移动它跨环境,它将行为相同方式,无论在你本地机器、CI 服务器还是云。
运行时架构
当你运行镜像,它成为容器,隔离环境执行应用。多个容器可以在相同主机运行,每个有自己文件系统、进程空间和网络栈。
容器引擎(如 Docker、containerd、CRI-O 或 Podman)管理:
- 容器生命周期
- 网络和隔离
- 资源分配
所有容器共享主机 OS 内核,坐在硬件顶部。那就是容器化如何实现一致性和效率,轻如进程,但隔离如 VM。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP197: 12 Architectural Concepts Developers Should Know。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。