【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 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:322759
用户头像

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

关注

评论

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

Android开发环境搭建

智趣匠

android 开发环境搭建 Androidstudio

Wallys/IPQ4018 12V-56VDCPassive 24V-56V/2*MMCX 27dbm Support MU-MIMO /industrial wifi moudle

wallysmeng

IPQ4018 IPQ4028

Deel创始人自述销售管理:大中小客户差异化、中美两风格、All hands和Connect机制

B Impact

VUE 前端文本输出为超文本

HoneyMoose

什么是DevSecOps?理解DevOps安全性

华为云PaaS服务小智

DevOps

世界元素多元化发展,法国名酒贾斯特里尼&布鲁克斯受推崇

联营汇聚

小布助手,身入大千世界

脑极体

2022-12-23:portainer是docker的web可视化工具。如果根据docker部署去写yaml,默认local是k8s,而不是docker,这不符合需求,需要修改yaml。请问部署在

福大大架构师每日一题

云原生 k8s k3s 福大大

极客时间运维进阶训练营第九周作业

9527

如何通过 NFTScan 捕获早期 NFT 项目投资趋势

NFT Research

区块链 NFT

架构实战营模块二 _ 作业

原城

架构实战营 #架构实战营 「架构实战营」

Spring单例和静态方法

hasWhere

场景 | 九科信息物流供应链领域RPA数字化解决方案

九科Ninetech

反序列化漏洞小工具绕过

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

HTTP报文首部字段概述

穿过生命散发芬芳

HTTP 12月月更

跳出程序员思维:如何应对上手英文工具站的几点误区

程序员泥瓦匠

贾斯特里尼&布鲁克斯为何被称为葡萄酒典范?

联营汇聚

小令动态丨令牌云荣获浦发银行创新社区最佳商业实践奖!

令牌云数字身份

身份认证 浦发银行 璞跃中国

linux运维常用脚本

@下一站

12月日更 12月月更 shell脚本 程序代码

数据治理八大优势和四大挑战

用友BIP

明道云联合RestCloud打造APaaS+IPaaS融合解决方案

明道云

阿里云张献涛:高性能计算发展的三大趋势

云布道师

阿里云 弹性计算 高性能计算

Zebec Chain缘何能成为新晋应用链,熊市下又为何值得我们关注?

西柚子

贾斯特里尼&布鲁克斯葡萄酒,用品质征服世界

联营汇聚

2022年“259”号文下聚合支付发展洞察

易观分析

金融 聚合支付 收款码

身份证扫描简史:科技进步无处不在,从复杂到极简

caidianer

ps 身份证 扫描

教你用JavaScript实现轮播图

小院里的霍大侠

JavaScript 编程开发 初学者 入门实战

270年经典传承,贾斯特里尼&布鲁克斯——红酒中的高端代表

联营汇聚

java运算符类型都有哪些

千锋IT教育

云渲染哪个平台费用低?云渲染怎么收费

Renderbus瑞云渲染农场

云渲染 云渲染收费

跨平台应用开发进阶(四十)自定义插件及引用

No Silver Bullet

uni-app 跨平台应用 12月月更 自定义插件

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