模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。
为了解决大型网站面临的高访问高并发、海量数据、高可靠运行等一系问题和挑战,大型互联网公司在实践中提出了许多解决方案,并且被其他公司广泛的利用。今天就带大家了解了解这些模式。
1.分层
分层是企业中最常见的一种架构模式,它在横向维度上把一个大型网站分成几个部分,这几个部分相互依赖共同组成一个大型网站,大型网站中最常用的分层是将网站系统分为三个层:
应用层,服务层,数据层,这三个层的功能分别如下:
应用层:负责具体业务和视图展示 服务层:为应用层提供服务支持,起到承上启下的作用 数据层:负责数据存储访问服务,如数据库,缓存,文件,搜索引擎等。
2.分割
分层是将网站系统从横向维度上切分,而分割是将网站系统从纵向维度上切分。分割的核心是:将网站不同的功能分割开来,包装成高内聚低耦合的模块单元,这些模块单元相互独立部署但又相互合作共同组成整个网站系统。
3.分布式
分层和分割的一个主要目的是为了切分后的模块便于分布式部署。分布式的核心是:利用更多的计算机 来处理大量的业务,来为更多的用户提供服务。但分布式也会带来一些问题:
1.分布式系统中,不同计算机之间的相互通信是需要消耗一定系统性能的。
2.计算机越多,服务器宕机的概率会越大。
3.分布式系统中,保持数据的一致性是一个比较困难的问题。
4.系统中计算机越多,网站系统越复杂,开发维护管理起来都会比较困难
下面列举常见的分布式方案:
1.分布式应用和服务
2.分布式静态资源
3.分布式数据和存储
4.分布式计算
4.集群
使用分布式虽然可以将已经分层和分割的模块独立部署,但是面对用户集中访问的模块,还要采用集群的方式来处理来自客户端的大量请求,避免一台服务器负载过重而宕机。
因为集群中的服务器提供相同的服务,因此可以提供更好的并发性,当有更多用户请求的时候只需要向集群中添加服务器即可。当某台服务器发生故障时,负载均衡设备或者系统的失效转移机制将请求分发到其他的服务器上去,使用户请求不受影响。
5.缓存
缓存就是将数据存放在距离计算机CPU最近的位置以加快处理速度,而且是改善网站性能的第一手段。缓存主要有一下几种
CDN:内容分发网络,CDN服务器部署在离用户最近的网络提供商机房,用户的请求总是先到达那里,在这里缓存 的数据可以直接返回给用户。
反向代理:反向代理服务器部署在网站机房,用户请求到达网站的数据中心的时候,最先到达的是反向代理服务器,在这里缓存的数据可以直接返回给用户。
本地缓存:在服务器本机上存放缓存数据,但是一般不能存放大量的数据
分布式缓存:当需要缓存的容量越来越大,本地缓存承受不了的情况下,分布式缓存可以解决这个问题,因为它可以单独部署大内存的服务器去缓存大量的数据。
6.异步
异步架构是典型的生产者消费者模式,两者不直接调用,而是通过一个第三方来实现自己的职责
相对于同步来讲,异步主要有以下优点:
提高系统可用性 加快网站响应速度 消除并发访问高峰
7.数据备份
网站需要7*24小时连续运行,但是服务器随时都有可能出现故障,特别是服务器规模很大的时候,出现某台服务器宕机是必然事件,所以要保证服务器宕机的情况下网站依然可以运行,就一定要有一定程度的数据备份。这样当一台服务器出现故障时,可以将访问服务转移到其他机器上去。
8.自动化
人为手动发布网站管理网站多多少少都会出错,而要把出错的概率降到最低,自动化管理是非常好的解决方案。这样可以把网站服务器宕机,网站系统崩溃的概率降到最低
9.安全
这几乎是所有网站的架构模式,任何一个网站都需要采取各种各样的措施保障网站安全运行!
架构模式切忌生搬硬套,而要在深刻理解问题的基础上去创造和创新。