Oracle 的 Cameron Purdy 分 10 个模式剖析可伸缩性的实现

  • Scott Delap
  • 张龙

2008 年 6 月 1 日

话题:Java架构语言 & 开发

Oracle 的 Cameron Purdy 最近在 JavaOne 2008 大会上作了一个关于可伸缩性的演讲。和其它大部分主要关注于具体 Java 类库的演讲不同的是,他从实际的角度谈到了软件架构和设计的一般原则。Purdy 大体上分 10 个步骤逐步剖析了可伸缩性问题,这 10 个步骤为:

10 - 理解问题

9 - 定义需求

8 - 架构胜于技术

7 - 理解基本要素

6 - 网络可视化

5 - 设计可视化

4a - 负载计划

4b - 分割度量

3a - 失败计划

3b - 复制可用性

2 - 值得实现伸缩性的点

1 - 简化
他指出可伸缩性并不能加快应用的运行处理速度,一个可伸缩的系统总是比单用户系统运行得慢。在演讲中,他提到了最近关于采用 Ruby 开发的 Twitter 伸缩性问题的争论,并提出了一个很有意思的观点--构架胜于技术。他甚至开玩笑说“连 Windows 都具有可伸缩性”。Purdy 强调一项合理的技术应该考虑到无法预料的垃圾收集调度、线程调度控制的缺乏和异步 I/O 的缺乏。

此外,Purdy 还提出创建可伸缩有状态的系统的挑战在于在保证现有系统耐用且易于管理的基础上实现可用性、可靠性、可伸缩性以及优质性能。在谈到这个观点时,Purdy 把他的演讲聚焦到了有状态的伸缩性扩展的 5 个模式:

  • 路由
  • 分割
  • 复制(可用性)
  • 调和
  • 消息
他把可靠的路由描述为有状态的伸缩性扩展的基础,并认为它能为分割和复制提供支持。在演讲中,他提到的最后一个也是最重要的话题是简化。Purdy 说复杂化会阻碍应用可靠性的实现,对于复杂的系统应该以有限的状态架构来建模。“如果你无法在白纸上画出系统的运行方式,那么这个系统最后的实现产品肯定也没法运行”。

查看英文原文:Oracle's Cameron Purdy Looks at 10 Patterns for Scaling Out

Java架构语言 & 开发