构建可扩展的系统 - mikeqian/java-nothing GitHub Wiki
- 垂直扩展 -- 提高机器配置
- 水平扩展 -- 增加机器数量
目标希望是线性的,一台能够支持200万的访问量,5台机器希望能够达到支持1000万的访问量。当然,显示是残酷的,随着不断的扩展,总会到达一个瓶颈。
增加CPU
以下3种问题会导致CPU增强效果寥寥。
- 锁竞争激烈
- 固定的线程数
- 单线程任务
增加内存
- cache大小固定
- JVM堆大小固定
SNA架构
应用做到无状态,将有状态的信息集中放入缓存或者数据库中,实现水平可扩展性。
缓存一致性
- 广播
- 一致性hash算法
文件系统水平扩展
- 直连
- SAN,NAS
- GFS