`
臻是二哥
  • 浏览: 183327 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

大型网站架构演变

阅读更多
第二遍阅读《大型网站技术架构》,真心觉得书中的内容很好,推荐大家去阅读。下面是书中对大型网站架构演变过程的介绍。
对于一个小型企业级网站,通常的架构如下图:


随着用户数量的增多,可以将应用服务与数据服务分离以提高性能,如下图:


用户继续增多,数据库的压力太大,此时考虑使用缓存,如下图:(缓存在网站性能优化中是一种很重要的手段,可以极大的减轻缓存所在位置后端的压力,缓存分为本地缓存和分布式缓存服务器,前者更快但容量有限,后者理论上容量可以无限伸缩。分布式缓存的一个典型例子是MemCached)。



增加缓存的做法缓解了数据服务器的压力,接着考虑缓解应用服务器的压力,将应用部署到集群中。在这个集群的前端添加负载均衡服务器以进行负载均衡,如下图:(把应用部署到集群当中会涉及到一个session对象的分享问题,留在以后博客中讨论)



使用集群的方式缓解了应用服务器的压力,接着又得解决数据服务器的压力。采用数据库读写分离,如下图:(应用服务器在写数据的时候访问主数据库,在读数据的时候访问从数据库,主数据库将数据实时的同步到从数据库)



数据库读写分离缓解了数据服务器的压力,接下来考虑解决应用服务器的压力。在负载均很服务器加入反向代理服务器和CDN服务器,如下图:(CDN叫做内容分发网络,它通过将用户请求转发到距离最近的缓存服务器上,从而直接返回结果。CDN可以说是网站在网络提供商机房中部署的缓存系统,反向代理服务是网站在自己的机房部署的缓存系统)


CDN和反向代理缓解了应用服务器的压力,接着又得解决数据服务器的压力。随着网站业务的不断增长,数据库虽然采用了读写分离机制,仍然不能满足性能需要。考虑使用分布式文件系统和分布式数据库系统,如图:(分布式数据库系统是数据库提升的最后手段,只有在单张表非常庞大的时候才使用。如果单张表不是很大,我们使用业务分库,即不同业务的数据存储到不同的数据库服务器上)



为网站添加NoSQL和搜索引擎,如下图:(应用服务器通过统一数据管理模块访问各种数据源)


大型网站的最终架构,如下图:


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

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








  • 大小: 88.2 KB
  • 大小: 114.2 KB
  • 大小: 34.8 KB
  • 大小: 47.1 KB
  • 大小: 76.4 KB
  • 大小: 84.4 KB
  • 大小: 116.6 KB
  • 大小: 88.6 KB
  • 大小: 72.3 KB
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics