📖 高扩展性网站的50条原则
高扩展性网站的50条原则, Martin L. Abbott/Michael T. Fisher, 张欣/杨海玲译, 人民邮电出版社, 2012
比较喜欢这类既讲技术又讲思想的书,读起来比较轻松.书是借的,迟早要还,这里把其主题点列出来,作为备忘. 有些内容并没有形象认识,也有对备忘的需要.
第1章 化简方程
- 1.1 不要过度设计
- 1.2 设计时就考虑扩展性 (设计,实现,部署)
- 1.3 把方案一减再减 (如何简化范围,如何简化设计,如何简化实施)
- 1.4 减少DNS查找
- 1.5 尽可能减少对象 (另一方面又不能过度减少对象)
- 1.6 使用同一品牌的网络设备
第2章 分布工作
- 2.1 横向复制 (X轴原则,比如通过硬件来扩展,用多个服务器分布工作)
- 2.2 拆分不同的东西 (Y轴原则)
- 2.3 拆分相近的东西 (Z轴原则)
第3章 横向扩展设计
- 3.1 设计横向扩展方案
- 3.2 采用经济型系统
- 3.3 横向扩展数据中心
- 3.4 利用云技术进行设计
地4章 使用正确的工具
- 4.1 合理使用数据库 (使用什么样的数据库,关系数据库,键值数据库,文件系统)
- 4.2 防火墙,到处都是防火墙 (考虑防火墙的必要性)
- 4.3 积极利用日志文件
第5章 不要重复工作
- 5.1 不要立即检查刚做过的工作
- 5.2 停止重定向
- 5.3 放松时序约束
第6章 积极利用缓存
- 6.1 利用CDN (Content Delivery Network,内容分发网络)
- 6.2 使用过期头
- 6.3 缓存Ajax调用
- 6.4 利用页面缓存
- 6.5 利用应用缓存
- 6.6 利用对象缓存
- 6.7 把对象缓存放在自己的 “层” 上
第7章 从错误中吸取教训
- 7.1 积极地学习
- 7.2 不要依靠QA发现失误
- 7.3 没有回退功能的设计是失败的设计
- 7.4 讨论失败并从中吸取教训
第8章 数据库原则
- 8.1 注意代价高的关系
- 8.2 使用类型正确的数据库锁
- 8.3 不要使用多阶段提交
- 8.4 不要使用SELECT FOR UPDATE
- 8.5 不要选择所有数据 (SELECT *)
第9章 容错设计与故障控制
- 9.1 采用隔离故障的 “泳道”
- 9.2 绝对不要信任单点故障
- 9.3 避免系统串联
- 9.4 确保能够启用/禁用功能
第10章 避免或分发状态
- 10.1 努力实现无状态
- 10.2 尽可能在浏览器端维护会话
- 10.3 利用分布式缓存存放状态
第11章 异步通信和消息总线
- 11.1 尽可能使用异步通信
- 11.2 确保信息总线能够扩展
- 11.3 避免让消息总线过度拥挤
第12章 其他原则
- 12.1 慎用第三方解决方案扩展
- 12.2 清楚、归档和成本合理的存储
- 12.3 删除事物处理中的商业智能
- 12.4 设计能够监控的应用
- 12.5 要能胜任