可伸缩性最佳实践(翻译)
这篇文章中总结了一些构建可伸缩性系统的最佳实践,总结的不错,于是翻译了下,原文在此:http://akfpartners.com/techblog/2009/08/11/scalability-best-practices/,翻译内容如下:
下面是我们认为的一些可伸缩性的最佳实践:
- 异步;尽可能的使用异步,同步调用会导致两个服务的可用性绑在一起,意味着一个服务出问题或变慢,另一个也会受到影响,这点也是eBay一直强调的;
- 泳道设计;错误隔离机制,避免一个失败影响全局,这种机制也有助于错误查找和代码替换;
- 缓存;在所有层次均使用缓存,例如数据、页面、页面片段等;
- 监测;从用户角度来看系统的性能。这包括从外部网络来对系统进行性能的监测,以及内部的系统间交互次数以及时间的监测;
- 数据复制;一方面是为了容灾,另一方面是为了提供多个用于读的数据库,降低写库的压力;
- 拆分;包括了应用的拆分以及数据库的拆分;
- 尽量少的使用数据库特性;尽可能的把数据库仅作为一个在线存储的功能而使用,不要把业务逻辑放在数据库里,否则将来会非常难扩展;
- 缓慢发布;发布时应缓慢发布,以保证新版本是正常的,避免由于某个压力测试时没测到的点,导致全站出问题;
- 压力以及性能测试;在发布前测试性能,尽管这不一定能发现全部问题,因此在发布前仍然要做好回滚的方案;
- 容量规划;提前判断系统能支撑多大的量,并做好扩容计划;
- 回滚;每次都要做好回滚的准备;
- 根源分析;确认有办法找到线上问题的根源所在,从而能够真正的解决问题;
- 从一开始就要注重质量;质量不能仅靠测试来保证,必须从设计阶段开始就去保证。
或许您对以下文章有兴趣:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述