购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 从网站的架构发展看缓存

最初的网站可能就是一台物理主机,放在IDC或者租用的是云服务器,上面只运行着应用服务器和数据库,LAMP(Linux Apache MySQL PHP)就是这样流行起来的。由于网站具备了一定的特色,吸引了部分用户的访问,逐渐会发现系统的压力越来越大,响应速度越来越慢,而这个时候比较明显的往往是数据库与应用的互相影响,于是将应用服务器和数据库服务器从物理上分离开来,变成了两台机器,这个时候技术上没有什么新的要求,系统又恢复到以前的响应速度了,支撑住了更高的流量,并且不会让数据库和应用服务器互相影响。这时网站后台的简单架构一般如图1-2所示。

图1-2 简单的网站架构示意图

随着访问网站的人数越来越多,响应速度又开始变慢了,可能是访问数据库的操作太多,导致数据连接竞争激烈,因此缓存开始登场。若想通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么可以选择采用静态页面缓存,这样程序上可以不做修改,就能够很好地减少对Web服务器的压力以及减少对数据库连接资源的竞争。随后,动态缓存登场,将动态页面里相对静态的部分也缓存起来,因此考虑采用类似的页面片段缓存策略。

随着访问量的持续增加,系统又开始变慢,怎么办?数据缓存来了,将系统中重复获取的数据信息从数据库加载到本地,同时降低了数据库的负载。

随着系统访问量的再度增加,应用服务器又扛不住了,开始增加Web服务器。那如何保持应用服务器中数据缓存信息的同步呢?例如之前缓存的用户数据等,这个时候通常会开始使用缓存同步机制以及共享文件系统或共享存储等。

在享受了一段时间的访问量高速增长后,系统再次变慢。开始数据库调优,优化数据库自身的缓存,接下来是采用数据库集群以及分库分表的策略。分库分表的规则是有些复杂的,考虑增加一个通用的框架来实现分库分表的数据访问,这个就是数据访问层(Data Access Layer,DAL)。同时,在这个阶段可能会发现的之前的缓存同步方案会出现问题,因为数据量太大,导致现在不太可能将缓存存储在本地后再同步,于是分布式缓存终于来了,将大量的数据缓存转移到分布式缓存上。

至此,系统进入了无级缩放的大型网站阶段,当网站流量增加时,应对的解决方案就是不断添加Web服务器、数据库服务器、以及缓存服务器了。此时,大型网站的系统架构演变为图1-3所示。

图1-3 大型网站的架构示意图

纵观网站架构的发展历程,业务量的增长是幸福的,但也有成长的烦恼,而缓存技术就是解除烦恼的灵丹妙药,这再次证明了什么是缓存为王。

现在,可以从缓存在系统中的位置来看这一王者在系统中各个层面的应用了。 byUhW0amFp1vP7R8sUmE4BrC+Gv1vEThhYtNTwq1pQQ/W2zskFlDDJjCYKkjtY8k

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开