扩展应用程序不仅仅意味着增加服务器。这意味着在保持性能、稳定性和用户体验的同时不断增长。为此,需要平衡架构、产品、数据和运营。本指南提供了可扩展性方法之间的比较,展示了何时使用每种方法。
重点是为需要在不破坏产品的情况下发展的公司和初创公司提供实用的路线图。
扩展应用程序意味着什么
在不降低性能的情况下扩展和支持增加的用户和需求。这涉及:
- 基础设施。
- 建筑学。
- 代码优化。
- 监控流程。
扩展不仅仅是技术。和策略。
您的应用程序需要扩展的迹象
- 高峰时段速度缓慢。
- 关键端点经常出现错误。
- 活跃用户快速增长。
- 基础设施成本失控上升。
如果出现这些迹象,就该采取行动了。
方法比较
垂直与水平
| 方法 | 优势 | 缺点 |
|---|---|---|
| 立式(较大机器) | 实施简单 | 物理限制、成本高 |
| 卧式(多机) | 规模更灵活 | 更加复杂 |
垂直一开始很好。全尺寸需要水平。
单体应用与微服务
| 型号 | 优势 | 缺点 |
|---|---|---|
| 巨石 | 简单快捷 | 难以攀爬的特定部位 |
| 微服务 | 按领域扩展 | 复杂性和开销 |
许多应用程序在迁移之前都进行了扩展和[整体式0] 优化。
缓存与存储体优化
| 解决方案 | 优势 | 缺点 |
|---|---|---|
| 缓存 | 快速降低负载 | 数据过时的风险 |
| 银行优化 | 解根 | 实施起来可能会比较慢 |
理想的情况是将两者结合起来。
基本的可扩展性策略
1. 攀爬前测量
没有指标,你就只能在黑暗中攀爬。用途:
- 延迟 P95。
- 错误率。
- CPU 和内存使用情况。
2.优化查询
银行查询缓慢是常见的瓶颈。调整索引、使用分页并减少连接。
3.应用缓存
缓存页面、查询和响应可减少负载并缩短响应时间。
4.队列和异步处理
耗时的任务应该进入队列,而不是直接请求。
5.基础设施规模
必要时,增加实例并使用平衡器分配流量。
成本与效益比较
| 行动 | 影响 | 成本 |
|---|---|---|
| 优化查询 | 高 | 中等 |
| 实施缓存 | 中等 | 低音 |
| 水平缩放 | 高 | 高 |
| 重构架构 | 高 | 高 |
这种比较可以帮助您确定优先顺序。
实际例子
一款配送应用程序的用户数量从 1 万增加到 20 万。团队:
- 优化餐厅查询。
- 对列表应用缓存。
- 水平缩放后端。
结果:延迟下降,应用程序保持稳定性。
攀爬时常见的错误
- 无需监控即可扩展。
- 过早迁移到微服务。
- 忽略基础设施成本。
- 不要在实际负载下进行测试。
避免这些错误可以节省时间和金钱。
可扩展性清单
- 监控性能指标。
- 优化银行。
- 实施缓存。
- 定义的异步进程。
- 配置可扩展的基础设施。
如果所有点都好的话,可扩展性往往是可持续的。
结论
扩展应用程序需要在技术和业务之间取得平衡。最好的策略是那些能够提高性能而不增加不必要的复杂性的策略。通过明确的比较和优先级,任何团队都可以安全成长。
##常见问题解答
我应该尽早转向微服务吗?
不会。只有当[单体1]成为真正的瓶颈时。
缓存解决一切?
不会。缓存有帮助,但不能取代数据库优化。
攀登的第一步是什么?
监控指标并识别真正的瓶颈。
缩放会增加很多成本吗?
它可能会增加,但通过规划和优化,成本得到控制。
如何避免高峰期撞车?
使用负载测试并准备具有自动扩展功能的基础设施。
另请阅读
- [应用程序中的WebView:Escalar简介2
- [如何扩展应用程序:每日比较3
- 【应用性能:实践中的真实例子4
- [面向初创公司的应用程序:扩展之前真正重要的清单5
- [初创公司申请-日常清单6
- [PWA:什么是以及如何优化性能以实现扩展7
