在这篇文章中,我们将讨论以下话题:
- 数据库 ACID 属性示例
- 你听说过 12 要素应用吗?
- API 网关做什么?
- Redis 架构如何演进?
- 云成本降低技术
12 要素应用
“12 要素应用”提供了一组用于构建现代软件应用的最佳实践。遵循这 12 个原则可以帮助开发者和团队构建可靠、可扩展和可管理的应用。
下图简要概述了每个原则:
代码库:有一个地方保存所有代码,并使用 Git 等版本控制管理它。
依赖:列出应用正常工作所需的所有内容,并确保它们易于安装。
配置:将重要设置(如数据库凭据)与代码分开,这样你可以在不重写代码的情况下更改它们。
后端服务:使用其他服务(如数据库或支付处理器)作为应用连接的独立组件。
构建、发布、运行:明确区分准备应用、发布它和在生产中运行它。
进程:设计应用,使每个部分不依赖特定计算机或内存。这就像制作可以组合在一起的乐高积木。
端口绑定:让应用可以通过网络端口访问,并确保它不在单台计算机上存储关键信息。
并发:使应用能够通过添加更多相同内容的副本来处理更多工作,就像为繁忙的餐厅雇佣更多工人。
易处置:你的应用应该快速启动并优雅关闭,就像关灯而不是拔掉电源线。
开发/生产等价:确保你用于开发应用的内容与你在生产中使用的非常相似,以避免意外。
日志:记录应用中发生的情况,以便你可以理解和修复问题,就像为你的软件写日记。
管理进程:将特殊任务与应用分开运行,就像在车间而不是在工厂地板上进行维护工作。
问题:你认为这些原则在改善软件开发实践方面可以产生最大影响的地方在哪里?
API 网关详解
下图显示了详细信息。
步骤 1:客户端向 API 网关发送 HTTP 请求。
步骤 2:API 网关解析和验证 HTTP 请求中的属性。
步骤 3:API 网关执行允许列表/拒绝列表检查。
步骤 4:API 网关与身份提供商对话进行身份验证和授权。
步骤 5:速率限制规则应用于请求。如果超过限制,请求被拒绝。
步骤 6 和 7:现在请求已通过基本检查,API 网关通过路径匹配找到相关服务进行路由。
步骤 8:API 网关将请求转换为适当的协议并发送到后端微服务。
步骤 9-12:API 网关可以正确处理错误,并在错误需要更长时间恢复时处理故障(断路器)。它还可以利用 ELK(Elastic-Logstash-Kibana)栈进行日志记录和监控。我们有时在 API 网关中缓存数据。
问题:
- 负载均衡器和 API 网关有什么区别?
- 我们需要为 PC、移动和浏览器分别使用不同的 API 网关吗?
Redis 架构演进
Redis 是一个流行的内存缓存。它如何演变成今天的架构?
2010 - 独立 Redis 当 Redis 1.0 在 2010 年发布时,架构相当简单。它通常用作业务应用的缓存。然而,Redis 将数据存储在内存中。当我们重启 Redis 时,我们会丢失所有数据,流量直接击中数据库。
2013 - 持久化 当 Redis 2.8 在 2013 年发布时,它解决了之前的限制。Redis 引入 RDB 内存快照来持久化数据。它还支持 AOF(仅追加文件),其中每个写命令都写入 AOF 文件。
2013 - 复制 Redis 2.8 还添加了复制以提高可用性。主实例处理实时读写请求,而副本同步主实例的数据。
2013 - Sentinel Redis 2.8 引入 Sentinel 实时监控 Redis 实例。是一个旨在帮助管理 Redis 实例的系统。它执行以下四个任务:监控、通知、自动故障转移和配置提供者。
2015 - 集群 2015 年,Redis 3.0 发布。它添加了 Redis 集群。Redis 集群是一个分布式数据库解决方案,通过分片管理数据。数据分为 16384 个槽,每个节点负责一部分槽。
展望未来 Redis 因其高性能和丰富的数据结构而流行,这大大降低了开发业务应用的复杂性。2017 年,Redis 5.0 发布,添加了流数据类型。2020 年,Redis 6.0 发布,在网络模块中引入了多线程 I/O。Redis 模型分为网络模块和主处理模块。Redis 开发者网络模块倾向于成为系统中的瓶颈。
问题:你使用过 Redis 吗?如果有,用于什么用例?
云成本降低技术
非理性云成本是许多组织在应对云计算复杂性时面临的最大挑战。
有效地管理这些成本对于优化云使用和维持财务健康至关重要。
以下技术可以帮助企业有效控制和最小化云费用。
减少使用:微调和调整资源的规模和范围,以确保效率而不影响应用性能(例如,缩小实例大小、最小化存储空间、整合服务)。
终止空闲资源:定位和消除未积极使用的资源,如休眠实例、数据库或存储单元。
正确 sizing:调整实例大小以充分满足应用需求,确保既不过度使用也不使用不足。
在非高峰时间关闭资源:设置自动机制或时间表,在非使用时间(特别是在低活动期)关闭非必需资源。
预留以降低费率:采用与你的具体工作负载需求一致的具有成本效益的定价模型,如预留实例或储蓄计划。额外提示:考虑使用 Spot 实例和较低层存储选项以获得额外的成本节约。
优化数据传输:利用数据压缩和内容分发网络(CDN)等方法来削减带宽费用,并战略性地定位资源以减少数据传输成本,重点关注区域内传输。
问题:哪种技术最适合你当前的云基础设施设置?
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP105: The 12 Factor App。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。