- Scalability
- 介绍
- 描述系统应对负载增长的能力
- 系统以某方式增长,有什么选项可以应对
- 负载扩展性
- 负载参数
- 负载增加影响
- 系统资源不变时,性能有什么影响
- 性能不变时,需要增加多少系统资源
- 某级别负载架构不能应付10倍负载
- 性能
- 思想
- 简化
- 不过度设计
- 设计时就考虑扩展性
- 方案一简再简
- 减少DNS查找
- 减少对象
- 同一品牌的网络设备
- 分布式
- 纵向扩展
- 横向扩展
- 弹性扩展
- 围绕假设建立
- 正确的工具
- 不重复工作
- 缓存
- CDN
- 过期头
- 缓存Ajax
- 页面缓存
- 应用缓存
- 对象缓存
- 对象缓存放在自己的层上
- 错误吸取
- 积极学习
- 不依靠QA发现失误
- 没有回退功能的设计是失败的设计
- 讨论失败
- 数据库
- 注意代价高的关系
- 用正确的锁
- 不多阶段提交
- 不SELECT FOR UPDATE
- 不选择所有数据
- 容错
- 采用隔离故障的“泳道”
- 不信任单点
- 避免系统串联
- 确保能够启用/禁用功能
- 避免或分发状态
- 实现无状态
- 在浏览器端维护会话
- 分布式缓存存放状态
- 异步
- 尽可能异步通信
- 确保消息总线能扩展
- 避免消息总线过度拥挤
- 其它
- 慎用第三方解决方案扩展
- 成本合理的存储
- 删除事务处理中的商业智能
- 设计能够监控的应用
- 服务化发展
- 进程内服务
- 单机远程服务
- 集群手动注册服务(nginx负载多实例)
- 自动注册和发现服务(zookeeper)
- 服务分组/隔离/路由
- 服务治理(限流/黑白名单)
- 参考资料