《高扩展性网站的50条原则》读书笔记

一.化简方程

1.不要过度设计
2.设计时就考虑扩展性
3.把方案一简再简
4.减少dns查找
5.尽可能减少对象
6.使用同一品牌的网络设备

二.分布工作

7.横向复制(x轴原则)
8.拆分不同的东西(y轴原则)  动词拆分操作,名词拆分资源
9.拆分相近的东西 (数据切片)

三.横向扩展设计

10.设计横向扩展方案
11.采用经济型系统
12.横向扩展数据中心
13.利用云计算进行设计

四.使用正确的工具

14.合理使用数据库
15.防火墙,到处都是防火墙
16.积极利用日志文件

五.不要重复工作

17.不要立即检查刚做过的工作
18.停止重定向
19.放松时序约束

六.积极使用缓存

20.利用cdn
21.使用过期头
22.缓存ajax调用
23.利用页面缓存
24.利用应用缓存
25.利用对象缓存
26.把对象缓存到自己的层上

七.从错误中吸取教训

27.积极地学习
28.不要依靠qa发现失误
29.没有回退功能的设计是失败的设计
30.讨论失败并从中吸取教训

八.数据库原则

31.注意代价高的关系
32.使用类型正确的数据库锁
33.不要使用多阶段提交
34.不要使用select for update
35.不要选择所有数据

九.容错设计与故障控制

36.采取隔离故障的泳道
37.绝对不要信任单点鼓掌
38.避免系统串联
39.确保能够启用禁用功能

十.避免或分发状态

40.努力实现无状态
41.尽量在浏览器端维护会话
42.利用分布式缓存存放状态

十一.异步通信与总线

43.尽可能使用异步通信
44.确保消息总线能够扩展
45.避免消息总线过度拥挤

十二.其他原则

46.慎用第三方解决方案扩展
47.清除 归档 成本合理的存储
48.删除事务处理中的商业智能
49.设计能够监控的应用
50.要能胜任