一、大型网站的特点
与传统企业应用系统相比,大型互联网应用系统有以下特点。
- 高并发,大流量:需要面对高并发用户,大流量访问。
- 高可用:系统7*24小时不间断服务。
- 海量数据:需要存储、管理海量数据,需要使用大量服务器。
- 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。
- 安全环境恶劣:由于互联网的开放性,使得互联网网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。
- 需求快速变更,发布频繁:和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求。
- 渐进式发展:与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能需求不同,几乎所有的大型互联网网站都是从一个小网站开始的,渐进地发展起来的
二、大型网站架构模式
2.1 分层(提升性能、扩展性)
分层是企业应用系统中最常见的一种架构模式,将系统在横向维度(还会讲到纵向维度,注意之间的区别)上切分成几个部分,每个部分负责一部分比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。
如:网络的7层通信协议、MVC的架构都是一种分层结构
大型网站中也采用分层结构,将网站大致分为:应用层、服务层、数据层,如下表所示:
应用层 | 负责具体业务和视图展示,如:网站首页及搜索输入和结果的展示 |
服务层 | 为应用层提供服务支持,如:用户管理服务,购物车服务等 |
数据层 |
提供数据存储访问服务,如:数据库、缓存、文件、搜索引擎等 |
但在实践中,大的分层结构内部还可以继续分层,如:应用层可以分为视图层(美工/前端负责)和业务逻辑层(后台工程师负责) ;服务层可以分为逻辑处理层和数据接口层(适配各种输入和输出的数据格式)
建议:虽然分层架构模式最初的目的是规划软件清晰的逻辑结构便于开发维护,但在网站的发展过程中,分层结构对网站支持高并发分布式方向发展至关重要,因此在网站发展之初就应该采用分层的架构,这样将来网站做大时才能有更好地应对。
2.2 分割(提升性能、扩展性)
如果说分层是将软件在横向维度进行切分,那么分割就是在纵向维度(可以理解为:功能/服务模块化)对软件进行切分。
网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
如:在应用层,将不同业务进行分割,将购物、论坛分割成不同的引用,由独立的团队负责,部署在不同的服务器上;
购物业务,可以进一步分割为机票酒店业务、小商品业务等
2.3 分布式(提升性能、扩展性)
对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部