AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

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

关注

评论

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

python进阶-装饰器

AIWeker

Python 人工智能 5月月更

看 Amazon 如何通过 Nitro System 构建技术优势

亚马逊云科技 (Amazon Web Services)

Builder 专栏

恭喜 Kvrocks 加入 Apache 软件基金会孵化器

Kvrocks

redis 开源 apache 社区

阿里大牛两万字总结+40张图文详解,不信你还参透不了并发编程

Java架构追梦

高并发 java面试 后端开发

Alibaba永远滴神!阿里顶级技术官500页网络协议手记,限时开源

Java架构追梦

Java 华为 网络协议 后端开发

LigaAI 倾情推荐,这5部烧脑电影让你爽翻天

LigaAI

程序人生

Apache ShardingSphere 企业行|走进携程

SphereEx

Apache 数据库 ShardingSphere SphereEx 企业行

云天励飞与华为签署合作协议,共同推进昇腾AI产业持续发展

科技热闻

浅析分布式系统之体系结构 - 事务与隔离级别(多对象、多操作)上篇

snlfsnef

数据库 架构 设计原则 一致性 事务隔离

2019,不仅是"自由自在",更是AI领域不平凡的一年

Baihai IDP

人工智能 AI

面向对象编程(OOP)

武师叔

5月月更

放弃保研和出国,投身基础软件,一位复旦学子的职业选择

TDengine

数据库 tdengine

北明软件加入昇腾万里伙伴计划,与华为共建昇腾AI生态,共同推动人工智能产业繁荣发展

科技热闻

691页,41个版块!终于有阿里大佬可以带我吃透Spring源码了

Java架构追梦

Java spring 后端开发

【Python】此集合非彼集合

謓泽

5月月更

未来的神AIoT!全网第一份AIoT系统学习指南,限时开源

Java架构追梦

Java 后端开发 ALOT

【直播回顾】OpenHarmony知识赋能五期第三课——多媒体整体介绍

OpenHarmony开发者

直播 OpenHarmony 成长计划 多媒体 标准系统

云图说|云数据库RDS跨区域备份

华为云开发者联盟

华为云 云数据库 备份 云数据库RDS 跨区域备份

使用小程序容器技术快速构建智能电视应用平台

Speedoooo

小程序 物联网 移动开发 小程序容器 智能电视

【案例】锐明技术:灵活部署,实现会话质量和安全的双重保障

行云管家

运维 等保 IT运维 等保2.0

中科创达与华为共启边缘计算合作,共建昇腾AI产业,赋能千行百业提质升级

科技热闻

Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践

阿里巴巴终端技术

ios swift

浅谈Flutter等跨平台移动开发框架

Speedoooo

flutter 小程序 前端框架 开发框架 小程序容器

如何基于盘古开发框架开发Dubbo微服务网关

码农大熊

微服务架构 网关

WordPress 如何重置密码

海拥(haiyong.site)

5月月更

双管齐下, 清华教授亲码JDK和HotSpot源码笔记,一次性学个明白

Java架构追梦

Java 后端开发

带派!真心被这份阿里大牛开源的“全彩版图解HTTP手册”折服了

Java架构追梦

Java 程序员 后端开发

【多云管理】国内多云管理平台厂家名单汇总

行云管家

云计算 多云管理 多云 云管平台

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

Java架构追梦

分布式 java面试 后端开发

阿里亿级并发册+机器学习算法+面试册+优化册+代码册 笔记!!!

Java架构追梦

Java 程序员 后端开发

Kubernetes 中数据包的生命周期 -- 第 3 部分

Se7en

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