阅读 Scalability for Dummies 的小抄,这系列文章从克隆,数据库,缓存和异步这4个角度,教大家如何构建一个可拓展的应用程序。
1. 克隆应用
负载均衡+集群
无状态,Session共享问题
2. 数据库
2.1. RMDBS
主从复制(从读,主写)配合通过添加RAM纵向拓展主库
sharding 数据库分片
denormalization
SQL tuning SQL调优
2.2. NOSQL
- 使用NOSQL配合RMDBS
什么是denormalization?
3. 缓存
当从数据库中获取大量数据时,您的用户仍然需要经历缓慢的页面请求。通过缓存高效地优化页面访问速度。请选择内存间缓存,例如Redis(每秒执行数百万次读操作),Memcached。
两种缓存数据模式
Cached Database Queries 缓存SQL查询结果集
Cached Objects 缓存对象。场景举例:用户会话,博客文章,热门数据,社交关系。
4. 异步
4.1. 页面静态化,CDN
4.2. 消息队列
I recommend you take a look at the first 3 tutorials on the RabbitMQ website.