1. 初始阶段架构
2. 应用服务与数据服务分离
3. 使用缓存
- 服务集群
5. 数据库读写分离
6. 反响代理和CDN
7. 分布式
8. 业务拆、 搜索引擎、nosql
是业务成就了技术,是事业成就了人,而不是相反。
网站架构设计无趣:
- 一味追求大公司的解决方案;
- 为了技术而技术;
企图利用技术解决所有问题。
大型网站架构模式:分层(太通用,算法、设计和架构无一例外,比如:control、model、view、service);
- 分割(还是分,偏业务);
- 分布式(分布式应用、分布式静态资源、分布式数据和存储、分布式计算);
- 集群(增加并发还能提高可用性);
- 缓存;
- 异步(不同系统模块间异步调用,优点:提高可用性和速度,消除并发高峰期;缺点:无法实时获取结果状态)
- 冗余(防止突发情况);
- 自动化(自动化代码管理,自动化测试,自动化安全测试,自动化部署 还有:自动化监控、自动化报警、自动化恢复,自动化分配资源)
安全(相对擅长不列了)
关注要素:性能;
- 可用性;
- 伸缩性;
- 扩展性;
安全性。
性能优化分类:前端优化(合并css,img和js从而减少http请求,使用浏览器缓存:技巧是改变文件名刷新,启用压缩,先css后js,减少cookie);
- 服务器性能优化(分布式缓存 memcached、异步、集群和代码优化[多线程、数据结构、垃圾回收]);
- 数据库优化(固态硬盘替换普通硬盘、B+和LSM树、hdfs替代raid)
在什么情况下使用多线程: