架构演化-初识

zjuwangleicn 2015-07-27

以下是自己的一点理解,如有理解有误的地方欢迎指出,不胜感谢。

1 网站建设初期,用户和访问量都非常小,应用服务+数据库+文件服务全都在一个服务器中

2 用户和访问量增大,应用服务器计算效率不够,文件服务存储量不够,数据库内存和硬盘需求不够

  导致问题的原因是所有服务都在一个服务器上,用多台服务器来解决问题,出现 应用服务器+数据库服务器+文件服务器

  应用服务器要逻辑计算能力强的cpu,数据库服务器需要更大的磁盘和内存,文件服务器要大磁盘,每个服务器单独占有自己的资源。

3 为了减小数据库压力,引入缓存,获取数据之前,先到缓存中拿取数据,这样可以大幅度减小数据库读取数据的压力。 

4 当访问量不断增加的时候,可能不断更换更强大的服务器,对于高并发海量数据的网站来说这样并不能最终解决问题,

  这时候就需要对应用服务器做集群,通过集群分担负载并且可以达到高扩展的作用 

  这时候的架构为:集群应用服务器(负载均衡)+缓存服务器+数据库服务器+文件服务器  

5、随着访问量增加,虽然缓存承担了一部分数据库压力,但还有一部分数据需要直接访问数据库(未命中、过期数据、需要插入数据)

   这时 可以使数据库读写分离处理(大部分数据库都支持)

6、然后添加CDN和反向代理,加速网站响应 ,提供更好的用户体验,两者原理都是缓存:

   CDN部署在网络提供商机房,使用户在访问时从距离最近的网络提供商的机房获取数据 

   反向代理:用户访问中心机房后,先访问反向代理服务器,如果这个服务器有所需要的数据缓存,直接从缓存中返回给用户

7、这时候对于数据量大的表的耗时查询,最好走搜索引擎或NoSQL数据库,到此数据存储有搜索引擎+NoSQL+缓存+主从数据库,

   对与数据访问最好有一个统一的一个模块来处理 

8、所有的业务都在一个系统中,导致过于复杂,则需要将整个系统按照业务切分为不同的系统,系统间,通过超链接、消息数据分发

   管理相同的数据存储系统来关联一个完成系统,到此系统管理更加容易。

缓存使用:

1、CDN:网络提供商处缓存一些静态的资源,用户访问这些资源时候会就近返回数据,提高网站相应速度。如视频网站

2、反向代理:缓存静态资源,用户访问网站的时候如果有缓存,则直接返回,减小应用服务器压力

3、本地缓存,和分布式缓存减小数据库的访问压力 

相关推荐