2 大型网站架构模式
模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用(类似于设计模式中的模式)。
2.1 网站架构模式
2.1.1 分层
将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。
在大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层。
优势:便于分工合作开发和维护
挑战:必须合理规划层次边界和接口,以及在开发过程中要严格遵循分层架构的约束,进制跨层次的调用以及逆向调用。
2.1.2 分割
在纵向方面对软件进行切分。分割形成高内聚低耦合的模块单元。
2.1.3 分布式
对于大型网站,分层和分割的一个主要目的就是为了切分后的模块便于分布式部署。
分布式可能遇到的问题:
1. 网络延迟的影响
2. 服务器宕机
3. 数据一致性保证
4. 开发维护的问题
在网站应用中,常见的分布式方案有以下几种:
- 分布式应用和服务
- 分布式静态资源
- 分布式数据和存储(传统的关系数据库分布式部署 / NoSQL )
- 分布式计算(MapReduce)
2.1.4 集群
将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
2.1.5 缓存
- CDN
- 反向代理
- 本地缓存:在应用服务器本地缓存这热点数据
- 分布式缓存:将数据缓存在一个专门的分布式缓存集群中
2.1.6 异步
在分布式系统中,多个服务器集群通过分布式消息队列实现异步,分布式消息队列可以看作内存队列的分布式部署。
- 网站扩展新功能非常便利
- 提高系统可用性
- 加快网站响应速度
- 消除并发访问高峰:将突然增加的访问请求数据加入消息队列中,等待消费者服务器依次处理,就不会对整个网站负载造成太大压力
2.1.7 冗余
服务器冗余运行+数据冗余备份
数据库——冷备份+热备份
灾备数据中心
2.1.8 自动化
2.1.9 安全
2.2 架构模式在新浪微博的应用