为了解决高并发访问、海量数据处理和高可靠性运行一系列问题,大型网站架构都会有一些大同小异的套路,可称为大型网站的架构模式:
1、分层
逻辑概念。将系统在横向维度上划分成几个部分,每个部分负责相对单一的职责,然后通过上层对下层的依赖和调用,共同组成一个完整的系统。
通常可分为
应用层:负责业务和视图战士,如网站首页、搜索输入及结果等。可以继续细分为视图层 + 业务逻辑层
服务层:为应用层提供服务支持,如用户管理、购物车服务等。可细分为 数据接口层+ 逻辑处理层。
数据层:提供数据存储及访问,如数据库、缓存、文件、搜索引擎等
分层架构必须合理规划层次边界和接口,禁止跨层次调用,比如应用层直接调用数据层,或者你想调用,数据层调用服务层,服务层调用应用层等。
分层结构对网站日后的扩展等至关重要,应该在规模很小的时候就进行分层。
补充:
MVC模式是一种框架模式。它跟网站这个架构模式怎么结合?找到一些图,先记下来,以后在实践中体会:
2、分割
在纵向对功能进行分割。比如在应用层,将不同业务进行分割,交给不同团队负责,部署在不同的服务器。
3、分布式
分层、分割的一个主要目的是便于分布式部署。
分布式意味着有更多的机器来共同完成同样的功能,资源更多,能够处理的数据和访问就越多。但开发管理复杂,因此要量力而行。
常用分布式方案:
1)分布式应用和服务
2)分布式静态资源。如JS、CSS、LOGO图片独立分布存放,并采用独立的域名,所谓动静分离。独立域名是为了加开浏览器并发加载速度。
3)分布式数据和存储。
4)分布式计算
4、集群
因为有更多服务器提供相同服务,因此集群可以提供能好的并发性。更重要的是,避免业务不致受服务器故障的影响。所以在网站应用中,即使是访问量很小的功能,也至少部署两台服务器构成一个小集群。
5、缓存
1)CDN
2)反向代理
3)本地缓存
4)分布式缓存
6、异步
引入排队机制,改善体验。
7、冗余
集群,备份。
8、自动化
无人值守,自动化发布,监控,告警,失效转移等。
9、安全