前面有点讲到对网站后台架构的初步理解,后来又去看了书,加深了了解。
架构就是最高层次的规划,难以改变的决定。 为了实现网站的高性能,高可用性,可伸缩性,可扩展性,网站安全等核心目标。从而形成的网站架构模式主要有:分层,分割,分布式,集群,缓存,异步,冗余,安全等 简单说说对他们的理解,
可能概念性的会比较多。因为只有理解了概念才能进行实例分析。实例分析将在下一节。
1、分层: 将系统在横向维度上切成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的调用组成一个完整的系统。简单的说,计算机硬件,操作系统,应用软件也可以看作是一种分层结构。网站分层一般分为应用层,服务层,数据层。而且还可以继续分层,如应用层还可以分为视图层和业务逻辑层,服务层也可以细分为数据接口层和逻辑技术层。 分层架构是逻辑上的,在物理部署上,可以布置在同一服务器上,但随着网站业务的发展,必须对已经分层的模块分离部署,每层分别部署在不同的服务器上。在网站的发展过程中,分层结构对网站支持高并发向发布式方向发展至关重要。
2、分割: 在纵向方面对软件进行切分。 网站越大,功能就越复杂,服务和数据处理的种类也越多,就可以将不同的功能和服务分割开便于不同模块的分布式布署。 例如,购物,论坛,搜索,广告分成不同的应用,由独立团队负责,部署在不同的服务器上。如果在同一个应用内部,业务复杂,会继续进行分割,如购物业务,进一步分成酒店预定,机票预定,小商品等更小的粒度。这些模块可以是独立的。
3、分布式: 对于大型的网,有了上面的分层和分割,是为了便于分布式布署。即把不同的模块布署在不同的服务器上。通过远程调用协同工作。 常用的有 分布式应用和服务 分布式静态资源 分布式数据和存储
4、集群: 上面使用分布式已经将分层和分割的模块独立布署。但对于用户访问集中的模块,如首页,还需要将独立布署的服务集群化。即多台服务器分别布署相同应用构成一个集群。通过负载均衡设备共同对外提供服务。当有更多用户访问时,只需向集群中加入新的机器,因为同一个应用由多台服务器提供,当一台服务器发生故障时,负载均衡设备会装请求发送到集群中其他服务器上。所以在网站应用中,即使是访问量很小的分布式应用和服务。也至少也要布署2台服务器构成一个小的集群提高系统的可用性。
5、缓存: 大型网站很多都使用了缓存设计。 缓存就是将数据存放在距离计算机最近的位置以加快处理速度。 CDN,缓存一些静态资源在离计终端最近的网络服务商,用户的网络请求总是最先到达他的网络服务商那里,就可以以最快的速度返回给用户。如视频网站和门户网站会将访问量大的热点内容缓存在CDN。 反向代理,网站前端的一部分,当请求到达网站数据中心时,最先访问的是反向代理服务器,直接返回数据给用户,不需要继续请求。 本地缓存, 分布式缓存,针对大型网站。装数据缓存在一个分布式集群中, 使用缓存有2个条件:数据在一定时间内不会过期,另外,数据是访问的热点。
6、异步:消息之间的传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过数据共享的方式异步执行进行协作。但会对用户体验,业务流程造成一定的影响。
7:冗余:数据库的备份,,另外一个就是主从分离,实时同步。 当然还有更多的模式,但是好的架构不是照搬的,而且对问题深刻理解基础上去实际应用的。 希望大家都来交流,共同探讨。