写点什么

提升可伸缩性的八项最佳实践

  • 2009-05-19
  • 本文字数:925 字

    阅读完需:约 3 分钟

Wille Faler 提出了八项提升系统可伸缩性和性能的最佳实践,其中包括减少数据库操作、使用缓存、减少网络通信等实践。

1. 减少数据库操作 - 尽可能远离数据库。如无必要,就不要打开数据库连接或者启动事务。

2. 缓存带来的显著变化 - 缓存能极大地减低数据库的负担,特别是当系统通过只读方式访问数据库的时候。内存缓存优于磁盘缓存,而磁盘缓存又优于远程缓存和关系型数据库。

3. 尽可能缓存粗粒度对象 - 缓存粗粒度对象“可以省去遍历 n 个缓存单元的 CPU 开销和时间。而且,获得完整的对象关系图也省去了对象关系图的装配时间。”

4. 不要永久性保存瞬态信息 - 避免在数据库里面存储瞬态数据,比如登录的会话信息。

“状态怪物”是一只非常危险的怪兽。根据一般的规律,在持久性存储设施(数据库、磁盘等)里面只需要保存真实的、必要的、关键的,以及需要备录的业务数据,其他的都不在此列。

5. 位置、位置 - 把东西放在靠近需要使用它们的地方。相对于负载均衡器、Web 服务器、应用服务器和数据库多个环节,直接经过负载均衡器和 Web 服务器从 CDN 获取数据要快一些,开销也更小。

6. 约束对有限资源的并发访问 - 如果多个请求需要访问同样的资源,执行同样的计算,最好是只处理首个请求,让其他的请求等待计算完成后直接使用最终结果。让所有的线程去访问同一个资源只会减缓处理的速度。

7. 分阶段地、异步地处理

根据处理过程的异步性,把该过程分散成单独的步骤,通过队列来隔离;每个步骤使用有限数量的工人线程进行处理:这样经常会给可伸缩性和性能同时带来奇迹般的变化。

8. 使网络延迟最小 - 尽可能使应用系统不去做远程访问,因为网络通信要明显慢于内存访问。在 Faler 这篇文章的评论里面, Steve M. Ciske 对减少数据库操作的做法表示了忧虑:

对于减少数据库操作的做法,我持谨慎态度。我见多了人们走向另一个极端,把所有的东西都放在应用层。

Paweł Stradomski 认为远程内存缓存要快于本地磁盘缓存,Faler 也表示了同意:

远程主机(通过网络连接)缓存可能会快于本地磁盘缓存。如果不考虑网络查找的时间,从磁盘顺序读取数据比从远程主机的内存里面读取数据要慢三倍。

延伸阅读:Simon Brown 的文章“可伸缩性原则”。

查看英文原文 8 Best Practices to Improve Scalability

2009-05-19 20:323033
用户头像

发布了 76 篇内容, 共 26.0 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

ATB是什么?

zjun

CANN Ascend 大模型推理

AIGC对本地配置要求高吗,云桌面如何实现一键镜像?

青椒云桌面

AIGC云桌面 AIGC云电脑 sd云端部署

Ascend推理组件MindIE LLM

zjun

推理模型 Ascend 大模型推理

AscendC从入门到精通系列(一)初步感知AscendC

zjun

算子 大模型 CANN AscendCL Ascend

AscendC从入门到精通系列(四)使用Pybind调用AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

原生APP外包开发流程

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

Microsoft Office LTSC 2021 for Mac:稳定高效的办公软件套件

小玖_苹果Mac软件

强大Raw格式图像ps插件Adobe Camera Raw for Mac中文激活

小玖_苹果Mac软件

ATB算子实现原理解读

zjun

CANN Ascend 大模型推理

ATB概念之:算子tiling

zjun

CANN 数据切片 Ascend 大模型推理

如何在c++侧编译运行一个aclnn(AOL)算子?

zjun

算子 大模型 CANN 昇腾 Ascend

智能加氢站站控系统(源码+文档+部署+讲解)

深圳亥时科技

强大三维模型渲染和动画插件 Video Copilot Element 3D for Mac激活版

小玖_苹果Mac软件

考核数据管理系统(源码+文档+部署+讲解)

深圳亥时科技

如何使用Ascend的ATB加速库?

zjun

CANN Ascend 大模型推理

AscendC从入门到精通系列(五)调用基于工程开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

Navicat Premium 15 for Mac:强大数据库管理和开发利器

小玖_苹果Mac软件

淘宝图片搜索接口(Taobao.item_search_img)

tbapi

淘宝API接口 淘宝拍立淘接口 淘宝图片搜索商品接口

NFT市场回暖:蓝筹项目成为复苏主力,空投潮助推价格上涨

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

SD云端部署哪个好?适合SD部署的桌面云工作站

青椒云桌面

云桌面 sd云端部署 云工作站

Axure RP 10 for Mac中文激活版:高效原型设计软件

小玖_苹果Mac软件

Antares Auto-Tune Pro for Mac(音调校正) 11.0 激活版

小玖_苹果Mac软件

开源云原生数据仓库 ByConity测试

多啦A梦

ByConity

AscendC从入门到精通系列(二)基于Kernel直调开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

AscendC从入门到精通系列(三)基于自定义算子工程开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

Microsoft Remote Desktop for Mac:跨平台远程桌面连接利器

小玖_苹果Mac软件

提升可伸缩性的八项最佳实践_最佳实践_Abel Avram_InfoQ精选文章