学习笔记2:《大型网站技术架构 核心原理与案例分析》之 大型网站架构演化

1. 初始阶段的网站

小型网站没有多少人访问,一个机器即可:应用服务,文件服务,数据库服务。三个服务全部在一起。

 

2. 应用服务与数据服务分离

随着用户量的增加,一个服务器已不能满足需求。这个时候将服务拆分,分别安装在三个服务器上:应用服务器,文件服务器,数据库服务器。

应用服务器需要对业务逻辑进行处理,对CPU的性能要求较高。数据库服务器对数据快速检索、保存等操作要求高,因而对硬盘和内存有很大需求。

文件服务器主要对磁盘要求较高。

 

3. 使用缓存改善网站性能

本地缓存和分布式缓存,本地缓存容量有限,分布式缓存在理论上不受限制。

在JAVA编程中经常需要读取本地的配置文件到静态内存中,这也可以认为是本地缓存。当然我们也可以用一些成熟的缓存框架,例如EHCache,来实现

本地缓存或分布式缓存。

 

4. 使用应用服务器集群改善网站的并发处理能力

使用缓存后,但是并没有解决单个应用服务器高并发处理能力的问题,也没有解决高可用的问题。因此对于持续增长的业务需求,不是增加单个服务器的性能,

而是通过增加应用服务器来分担访问压力。通过采用负载均衡器的方式,使用户访问均衡分配到集群中的每个服务器中。

负载均衡,在linux系统中,经常用LVS实现。同时应用服务器集群如何解决Session问题,是重点之一。

 

5. 数据库读写分离

网站使用缓存后,大部分的数据访问将不再通过数据库来完成,极大降低了数据库的压力。但仍有少部分的数据查询和全部的数据写入集中中一台数据库服务器中,

这个服务器将成为网站性能的瓶颈。为解决这个问题,可以对数据库做读写分离。现在主流数据库都支持主从热备,数据写入主数据库后,主数据库可以实时复制到

从数据库中。利用这一功能,可以使数据库读写分离,从而改善数据库负载压力。

数据库读写分离与Oracle RAC不一样,RAC中数据是共享的,而读写分离则存在两份一样的数据。

 

6. 使用反向代理和CDN加速网站响应

网络延迟会导致用户流失,为提供更好的用户体验,留住用户。必须加速网站访问速度,主要措施有:CDN和反向代理。

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房;反向代理则部署在网站的中心机房,当用户请求到达中心机房时,首先访问的服务器是反向代理服务器。

CDN和反向代理主要针对静态内容或不经常变更的内容,例如网站首页,推荐等。这样用户一访问网址,就能迅速得到响应内容。

 

7. 使用分布式文件系统和分布式数据库系统

数据库服务器从一台拆分两台(读写分离),但是随着业务发展,依然不能满足需求,这时需要使用分布式数据库,文件系统也是一样。分布式数据库是网站数据库拆分的最后手段。

只有在单表规模非常庞大的时候才使用。网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。

 

8. 使用NOSQL和搜索引擎

网站业务越来越复杂,,对数据存储和检索的需求就越来越复杂,这时需要采用NOSQL和搜索引擎来支撑。

 

9. 业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。具体到技术上,根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署维护。

应用之间可以通过一个超链接建立关系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个完整系统。

 

10. 分布式服务

业务拆分越细,导致部署的应用服务越来越多,应用服务与数据库之间的连接数也会暴增,会导致数据库连接资源不足。

解决办法:将共用的服务提取出来,独立部署,发布借口共第三方服务调用。这样第三方服务不必直接连接数据库,而是连接到共用服务中。

posted @ 2017-02-21 20:34  huiy_小溪  阅读(218)  评论(0编辑  收藏  举报