构建可扩展的系统 - mikeqian/java-nothing GitHub Wiki

  • 垂直扩展 -- 提高机器配置
  • 水平扩展 -- 增加机器数量

目标希望是线性的,一台能够支持200万的访问量,5台机器希望能够达到支持1000万的访问量。当然,显示是残酷的,随着不断的扩展,总会到达一个瓶颈。

增加CPU

以下3种问题会导致CPU增强效果寥寥。

  • 锁竞争激烈
  • 固定的线程数
  • 单线程任务

增加内存

  • cache大小固定
  • JVM堆大小固定

SNA架构

应用做到无状态,将有状态的信息集中放入缓存或者数据库中,实现水平可扩展性。

缓存一致性

  • 广播
  • 一致性hash算法

文件系统水平扩展

  • 直连
  • SAN,NAS
  • GFS