一. 化简方程
1.1 原则1:不要过度设计
1.2 原则2:设计时就考虑扩展性(D-I-D方法)
1.2.1 设计
1.2.2 实现
1.2.3 部署
1.3 原则3:把方案一简再简
1.3.1 如何简化范围
1.3.2 如何简化设计
1.3.3 如何简化实施
1.4 原则4:减少DNS查找
1.5 原则5:尽可能减少对象
1.6 原则6:使用同一品牌的网络设备
1.7 小结
参考资料
二. 分布工作
2.1 原则7:横向复制(X轴原则)
2.2 原则8:拆分不同的东西(Y轴原则)
2.3 原则9:拆分相近的东西(Z轴原则)
2.4 小结
参考资料
三. 横向扩展设计
3.1 原则10:设计横向扩展方案
3.2 原则11:采用经济型系统
3.3 原则12:横向扩展数据中心
3.4 原则13:利用云技术进行设计
3.5 小结
参考资料
四. 使用正确的工具
4.1 原则14:合理使用数据库
4.2 原则15:防火墙,到处都是防火墙
4.3 原则16:积极利用日志文件
4.4 小结
参考资料
五. 不要重复工作
5.1 原则17:不要立即检查刚做过的工作
5.2 原则18:停止重定向
5.3 原则19:放松时序约束
5.4 小结
参考资料
六. 积极利用缓存
6.1 原则20:利用CDN
6.2 原则21:使用过期头
6.3 原则22:缓存Ajax调用
6.4 原则23:利用页面缓存
6.5 原则24:利用应用缓存
6.6 原则25:利用对象缓存
6.7 原则26:把对象缓存放在自己的“层”上
6.8 小结
参考资料
七. 从错误中吸取教训
7.1 原则27:积极地学习
7.2 原则28:不要依靠QA发现失误
7.3 原则29:没有回退功能的设计是失败的设计
7.4 原则30:讨论失败并从中吸取教训
7.5 小结
参考资料
八. 数据库原则
8.1 原则31:注意代价高的关系
8.2 原则32:使用类型正确的数据库锁
8.3 原则33:不要使用多阶段提交
8.4 原则34:不要使用SELECT FOR UPDATE
8.5 原则35:不要选择所有数据
8.6 小结
参考资料
九. 容错设计与故障控制
9.1 原则36:采用隔离故障的“泳道”
9.2 原则37:绝对不要信任单点故障
9.3 原则38:避免系统串联
9.4 原则39:确保能够启用/禁用功能
9.5 小结
十. 避免或分发状态
10.1 原则40:努力实现无状态
10.2 原则41:尽可能在浏览器端维护会话
10.3 原则42:利用分布式缓存存放状态
10.4 小结
参考资料
十一. 异步通信和消息总线
11.1 原则43:尽可能使用异步通信
11.2 原则44:确保消息总线能够扩展
11.3 原则45:避免让消息总线过度拥挤
11.4 小结
十二. 其他原则
12.1 原则46:慎用第三方解决方案扩展
12.2 原则47:清除、归档和成本合理的存储
12.3 原则48:删除事务处理中的商业智能
12.4 原则49:设计能够监控的应用
12.5 原则50:要能胜任
12.6 小结
参考资料
十三. 原则回顾和优先级划分
13.1 评估扩展项目和主动权的风险-收益模型
13.2 扩展原则的收益/优先级等级
13.3 小结