第二遍阅读《大型网站技术架构》,真心觉得书中的内容很好,推荐大家去阅读。下面是书中对大型网站架构演变过程的介绍。
对于一个小型企业级网站,通常的架构如下图:
随着用户数量的增多,可以将应用服务与数据服务分离以提高性能,如下图:
用户继续增多,数据库的压力太大,此时考虑使用缓存,如下图:(缓存在网站性能优化中是一种很重要的手段,可以极大的减轻缓存所在位置后端的压力,缓存分为本地缓存和分布式缓存服务器,前者更快但容量有限,后者理论上容量可以无限伸缩。分布式缓存的一个典型例子是MemCached)。
增加缓存的做法缓解了数据服务器的压力,接着考虑缓解应用服务器的压力,将应用部署到集群中。在这个集群的前端添加负载均衡服务器以进行负载均衡,如下图:(把应用部署到集群当中会涉及到一个session对象的分享问题,留在以后博客中讨论)
使用集群的方式缓解了应用服务器的压力,接着又得解决数据服务器的压力。采用数据库读写分离,如下图:(应用服务器在写数据的时候访问主数据库,在读数据的时候访问从数据库,主数据库将数据实时的同步到从数据库)
数据库读写分离缓解了数据服务器的压力,接下来考虑解决应用服务器的压力。在负载均很服务器加入反向代理服务器和CDN服务器,如下图:(CDN叫做内容分发网络,它通过将用户请求转发到距离最近的缓存服务器上,从而直接返回结果。CDN可以说是网站在网络提供商机房中部署的缓存系统,反向代理服务是网站在自己的机房部署的缓存系统)
CDN和反向代理缓解了应用服务器的压力,接着又得解决数据服务器的压力。随着网站业务的不断增长,数据库虽然采用了读写分离机制,仍然不能满足性能需要。考虑使用分布式文件系统和分布式数据库系统,如图:(分布式数据库系统是数据库提升的最后手段,只有在单张表非常庞大的时候才使用。如果单张表不是很大,我们使用业务分库,即不同业务的数据存储到不同的数据库服务器上)
为网站添加NoSQL和搜索引擎,如下图:(应用服务器通过统一数据管理模块访问各种数据源)
大型网站的最终架构,如下图:
上面是一个网站从最初的一台服务器逐渐发展壮大的过程,书中作者在最后有一段总结:技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段来解决。这句话我的理解,架构没有好坏之分,适合业务的就是最好的,同时在设计架构时不要局限于技术。
对于一个小型企业级网站,通常的架构如下图:
随着用户数量的增多,可以将应用服务与数据服务分离以提高性能,如下图:
用户继续增多,数据库的压力太大,此时考虑使用缓存,如下图:(缓存在网站性能优化中是一种很重要的手段,可以极大的减轻缓存所在位置后端的压力,缓存分为本地缓存和分布式缓存服务器,前者更快但容量有限,后者理论上容量可以无限伸缩。分布式缓存的一个典型例子是MemCached)。
增加缓存的做法缓解了数据服务器的压力,接着考虑缓解应用服务器的压力,将应用部署到集群中。在这个集群的前端添加负载均衡服务器以进行负载均衡,如下图:(把应用部署到集群当中会涉及到一个session对象的分享问题,留在以后博客中讨论)
使用集群的方式缓解了应用服务器的压力,接着又得解决数据服务器的压力。采用数据库读写分离,如下图:(应用服务器在写数据的时候访问主数据库,在读数据的时候访问从数据库,主数据库将数据实时的同步到从数据库)
数据库读写分离缓解了数据服务器的压力,接下来考虑解决应用服务器的压力。在负载均很服务器加入反向代理服务器和CDN服务器,如下图:(CDN叫做内容分发网络,它通过将用户请求转发到距离最近的缓存服务器上,从而直接返回结果。CDN可以说是网站在网络提供商机房中部署的缓存系统,反向代理服务是网站在自己的机房部署的缓存系统)
CDN和反向代理缓解了应用服务器的压力,接着又得解决数据服务器的压力。随着网站业务的不断增长,数据库虽然采用了读写分离机制,仍然不能满足性能需要。考虑使用分布式文件系统和分布式数据库系统,如图:(分布式数据库系统是数据库提升的最后手段,只有在单张表非常庞大的时候才使用。如果单张表不是很大,我们使用业务分库,即不同业务的数据存储到不同的数据库服务器上)
为网站添加NoSQL和搜索引擎,如下图:(应用服务器通过统一数据管理模块访问各种数据源)
大型网站的最终架构,如下图:
上面是一个网站从最初的一台服务器逐渐发展壮大的过程,书中作者在最后有一段总结:技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段来解决。这句话我的理解,架构没有好坏之分,适合业务的就是最好的,同时在设计架构时不要局限于技术。
还是在推荐大家读一读原书《大型网站技术架构 核心原理与技术分析》 李智慧著,个人很喜欢。
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6293594.html,如需转载请自行联系原作者