大型网站架构演变

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

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

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


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


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


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


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


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

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

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

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



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6293594.html,如需转载请自行联系原作者

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
12天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
56 6
|
12天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
28 1
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
3月前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
3月前
|
消息中间件 运维 Kubernetes
探索微服务架构的演变与实践
在软件开发的长河中,微服务架构如同一股清流,它改变了我们构建和部署应用的方式。本文将深入探讨微服务架构从诞生到成熟的发展历程,分析其核心价值与面临的挑战,并分享实践中的经验教训。通过具体案例,我们将揭示如何在不断变化的技术生态中有效运用微服务架构,以及如何克服实施过程中的障碍。
|
1月前
|
负载均衡 API 持续交付
深入探索微服务架构的演变与实践
【10月更文挑战第5天】 在当今软件开发领域,微服务架构以其独特的优势,如解耦、灵活性和可扩展性,已成为构建现代应用的首选方法。本文将全面解析微服务的核心概念、发展历程及其在实际应用中的最佳实践,帮助读者深入理解并有效实施微服务架构。
31 3
|
1月前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。
|
26天前
|
机器学习/深度学习 人工智能 前端开发
移动应用的架构演变与未来趋势
【10月更文挑战第20天】移动应用开发经历了从简单到复杂的演进过程,其架构设计也随着技术进步和用户需求的变化而不断演化。本文将探讨移动应用架构的变迁,分析当前流行的架构模式,并预测未来的发展趋势,旨在为开发者提供架构设计的参考和启示。
30 0
|
2月前
|
机器学习/深度学习 人工智能 云计算
后端架构的演变与未来趋势
本文深入探讨了后端架构的历史演变和未来发展趋势,从单体应用到微服务架构,再到无服务器架构,分析了每种架构的特点、优势及应用场景。同时,展望了未来可能的发展方向,如人工智能在后端开发中的应用、云计算技术的深度融合等,为后端开发者提供了宝贵的参考和启示。
|
2月前
|
人工智能 边缘计算 Serverless
后端架构演变与未来趋势
本文旨在通过对后端架构的发展历程进行梳理,探讨从单体应用到微服务架构的转变过程及其背后的驱动因素。同时,分析当前后端技术中的热门话题如容器化、Serverless架构和人工智能集成等,并对未来可能的技术趋势进行展望。通过总结现有技术的优缺点及未来可能面临的挑战,为后端开发者提供有价值的参考。这也太棒了吧!