大型网站架构演变

第二遍阅读《大型网站技术架构》,真心觉得书中的内容很好,推荐大家去阅读。下面是书中对大型网站架构演变过程的介绍。
对于一个小型企业级网站,通常的架构如下图:
[img]http://dl2.iteye.com/upload/attachment/0117/5915/ab7fbf72-99d4-329d-809a-e1f7242fe7ba.png[/img]

随着用户数量的增多,可以将应用服务与数据服务分离以提高性能,如下图:
[img]http://dl2.iteye.com/upload/attachment/0117/5917/3e7b2190-ce13-310f-ad9d-9764d4d6f185.png[/img]

用户继续增多,数据库的压力太大,此时考虑使用缓存,如下图:[color=red](缓存在网站性能优化中是一种很重要的手段,可以极大的减轻缓存所在位置后端的压力,缓存分为本地缓存和分布式缓存服务器,前者更快但容量有限,后者理论上容量可以无限伸缩。分布式缓存的一个典型例子是MemCached)。[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5919/827d83be-c195-373d-bbb5-4e4784d29e55.png[/img]


增加缓存的做法缓解了数据服务器的压力,接着考虑缓解应用服务器的压力,将应用部署到集群中。在这个集群的前端添加负载均衡服务器以进行负载均衡,如下图:[color=red](把应用部署到集群当中会涉及到一个session对象的分享问题,留在以后博客中讨论)[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5980/efae0834-9389-38e7-aa57-5e86db8fdee4.png[/img]


使用集群的方式缓解了应用服务器的压力,接着又得解决数据服务器的压力。采用数据库读写分离,如下图:[color=red](应用服务器在写数据的时候访问主数据库,在读数据的时候访问从数据库,主数据库将数据实时的同步到从数据库)[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5923/96578adf-6a77-3de1-8fb9-4b45b2a5384e.png[/img]


数据库读写分离缓解了数据服务器的压力,接下来考虑解决应用服务器的压力。在负载均很服务器加入反向代理服务器和CDN服务器,如下图:[color=red](CDN叫做内容分发网络,它通过将用户请求转发到距离最近的缓存服务器上,从而直接返回结果。CDN可以说是网站在网络提供商机房中部署的缓存系统,反向代理服务是网站在自己的机房部署的缓存系统)[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5925/899a82be-8570-3f68-80b9-a731b83cd58d.png[/img]

CDN和反向代理缓解了应用服务器的压力,接着又得解决数据服务器的压力。随着网站业务的不断增长,数据库虽然采用了读写分离机制,仍然不能满足性能需要。考虑使用分布式文件系统和分布式数据库系统,如图:[color=red](分布式数据库系统是数据库提升的最后手段,只有在单张表非常庞大的时候才使用。如果单张表不是很大,我们使用业务分库,即不同业务的数据存储到不同的数据库服务器上)[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5927/dfb40d29-81ec-36ab-845b-0e306b46d247.png[/img]


为网站添加NoSQL和搜索引擎,如下图:[color=red](应用服务器通过统一数据管理模块访问各种数据源)[/color]
[img]http://dl2.iteye.com/upload/attachment/0117/5911/889e1925-f35d-3b2b-b88e-b592008f31a7.png[/img]

大型网站的最终架构,如下图:
[img]http://dl2.iteye.com/upload/attachment/0117/5913/f17c1fff-04cc-325e-8f0e-6dbf9baf5667.png[/img]

上面是一个网站从最初的一台服务器逐渐发展壮大的过程,书中作者在最后有一段总结:[color=red]技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段来解决。这句话我的理解,架构没有好坏之分,适合业务的就是最好的,同时在设计架构时不要局限于技术。[/color]

还是在推荐大家读一读原书《大型网站技术架构 核心原理与技术分析》 李智慧著,个人很喜欢。

你可能感兴趣的:(网站架构读书笔记)