《大型网站技术架构-核心原理与案例分析》之二: 大型网站架构模式

最近刚刚读完李智慧的《大型网站技术架构-核心原理与案例分析》,对每章重点内容作了一些笔记,以便加深印象及日后查阅。

为了解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而逐渐形成大型网站架构模式。

1、分层

分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

2、分割

如果说分层是将软件在横向方面进行切分 ,那么分割就是在纵向方面对软件进行切分。

网站越大,功能越复杂,服务和数据处理的各类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署提高网站的并发处理能力和功能扩展能力。

3、分布式

对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。

在网站应用中,常用的分布式方案有以下几种。

分布式应用和服务

分布式表态资源

分布式数据和存储

分布式计算

分布式配置

分布式锁

分布式文件

4、集群

使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块(比如网站的首页),还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。

5、缓存

CDN:即内容分发网络,部署在距离终端用户最近的网络服务商,用户的网络请求总是先到达他的网络服务商那里,在这里缓存网站的一些静态资源,可以就近以最快速度以返回给用户。

反向代理:反向代理属于网站前端架构的一部分,部署在网站的前端,当用户请求到达网站的数据中心时,最先访问到的就是反向代理服务器里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。

本地缓存:在应用服务器本地缓存着热点数据,应用程序可以在本机内存中直接访问数据,而无需访问数据库。

分布式缓存:将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信访问缓存数据。

使用缓存有两个前提条件,一是数据访问热点不均衡,某些数据会被更频繁的访问,这些数据应该放在缓存中;二是数据在某个时间段内有效,不会很快过期,否则缓存的数据就会因已经失效而产生脏读,影响结果的正确性。

6、异步

异步是典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对网站扩展新功能非常便利。除此之外,使用异步消息队列还有如下特性。

提高系统可用性:消费者服务器发生故障,数据会在消息队列服务器上存储堆积,生产者服务器可以继续处理业务请求,系统整体表现无故障。消费者服务器恢复正常后,继续处理消息队列中的数据。

加快网站响应速度:自在业务处理前端的生产者服务器在处理完业务请求后,将数据写入消息队列,不需要等待消费者服器处理完就可以返回,响应延迟减少。

消除并发访问高峰:使用消息队列将突然增加的访问请求数据放入消息队列中,等待消费者服务器依次处理,就不会对整个网站负载造成太大压力。

7、冗余

服务器冗余运行,数据冗余备份,当某台服务器宕机时,可以将其上的服务和数据访问转移到其它机器上。

数据库除了定期备份,存档保存,实现冷备份外,为了保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现热备份。某些大型网站会对整个数据中心进行备份,全球范围内部署灾备数据中心。

8、自动化

发布过程自动化、自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化数据转移、自动化失效恢复、自动化降级、自动化分配资源。

 

posted @ 2016-06-06 13:27  木子三金  阅读(254)  评论(0编辑  收藏  举报