大型网站技术架构演变_互联网_IT计算机_专业资料PPT课件
- 格式:ppt
- 大小:760.50 KB
- 文档页数:16
⼤型⽹站技术架构1. ⼤型⽹站架构演化发展历程1)初始阶段的⽹站架构应⽤程序、数据库、⽂件等所有资源都在⼀台服务器上。
Linux+PHP+Apache+MySQL。
初始阶段的⽹站架构2)应⽤服务和数据服务分离使⽤三台服务器:应⽤服务器、⽂件服务器、数据库服务器。
应⽤服务和数据服务分离3)使⽤缓存改善⽹站性能⽹站使⽤缓存4)使⽤应⽤服务器集群改善⽹站的并发处理能⼒应⽤服务器集群部署5)数据库读写分离数据库读写分离6)使⽤反向代理和CDN加速⽹站响应⽹站使⽤反向代理和CDN加速访问7)使⽤分布式⽂件系统和分布式数据库系统使⽤分布式⽂件和分布式数据库系统8)使⽤NoSQL和搜索引擎使⽤NoSQL和搜索引擎9)业务拆分垂直拆分,分⽽治之,按业务拆分成不同的应⽤。
业务拆分10)分布式服务⽔平拆分,提取公共组件,中台战略。
分布式服务2. ⼤型⽹站架构模式1)分层⽔平切分:应⽤层、服务层、数据层。
2)分割垂直切分:按业务切分。
3)分布式分布式应⽤和服务、分布式数据和存储、分布式计算、分布式锁、分布式⽂件系统。
4)集群5)缓存6)异步7)冗余8)⾃动化9)安全3. ⼤型⽹站核⼼架构要素软件架构:系统的各个重要组成部分及其关系构成了系统的架构,这些组成部分可以是具体的功能模块,也可以是⾮功能的设计与决策,他们相互关系组成⼀个整体,共同构成了软件系统的架构。
1)性能性能优化,前端:浏览器缓存、页⾯压缩、CDN缓存、反向代理缓存。
后端:缓存、异步、集群、多线程、改善内存管理、数据库索引、SQL优化。
2)可⽤性⾼可⽤的⼿段:冗余、负载均衡集群。
3)伸缩性关注点:⾮功能性需求(技术需求)。
衡量架构伸缩性的主要标准:是否可以⽤多台服务器构建集群,是否容易向集群中添加新的服务器,新服务器是否可以提供和原服务器⽆差别的服务,集群可容纳的总的服务器数量是否有限制。
4)扩展性关注点:功能需求。
衡量架构扩展性的主要标准:增加新的业务产品时,是否可以实现对现有产品透明⽆影响,不需要改动或者很少改动既有业务功能就可以上线新产品,不同产品之间是否很少耦合,⼀个产品改动对其他产品功能⽆影响。
计算机网络架构的演变在当今数字化的时代,计算机网络已经成为我们生活和工作中不可或缺的一部分。
从简单的局域网到复杂的全球互联网,计算机网络架构经历了多次重大的演变,每一次的变革都带来了更高效、更可靠、更安全的网络服务。
早期的计算机网络架构主要是基于集中式的模型。
在这种架构中,所有的计算和数据处理都集中在一台大型主机上,终端用户通过终端设备连接到主机进行操作。
这种集中式架构的优点是易于管理和控制,但是其缺点也非常明显。
由于所有的处理都依赖于主机,一旦主机出现故障,整个网络就会陷入瘫痪。
而且,随着用户数量的增加,主机的负担会越来越重,导致系统性能下降。
随着计算机技术的发展,分布式网络架构逐渐取代了集中式架构。
在分布式架构中,计算和数据处理任务分布在多个节点上,这些节点通过网络相互连接和通信。
这种架构大大提高了系统的可靠性和可扩展性。
即使某个节点出现故障,其他节点仍然可以继续工作,不会导致整个网络的瘫痪。
而且,通过增加节点,可以很容易地扩展网络的处理能力,以满足不断增长的用户需求。
在分布式网络架构的发展过程中,客户机/服务器(C/S)架构是一个重要的阶段。
在 C/S 架构中,服务器负责提供数据和服务,客户机则向服务器请求数据和服务,并在本地进行处理和展示。
这种架构明确了服务器和客户机的角色和职责,提高了系统的效率和安全性。
例如,在企业内部的网络中,通常会有文件服务器、数据库服务器等,员工使用的个人电脑则作为客户机。
然而,C/S 架构也存在一些不足之处。
首先,服务器的性能和负载成为系统的瓶颈,如果同时有大量的客户机请求服务,服务器可能无法及时响应。
其次,客户端需要安装特定的软件,这增加了系统的维护成本和复杂性。
为了解决 C/S 架构的问题,浏览器/服务器(B/S)架构应运而生。
在 B/S 架构中,用户通过浏览器访问服务器上的网页应用程序,服务器负责处理业务逻辑和数据存储。
这种架构的优点是客户端无需安装特定的软件,只需要有一个浏览器即可,大大降低了系统的维护成本。
阿里巴巴大型网站架构演变和知识体系之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。
架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易出问题,于是进入了第一步演变阶段:将应用和数据库从物理上分离,变成了两台机器,这个时候技术上没有什么新的要求,但你发现确实起到效果了,系统又恢复到以前的响应速度了,并且支撑住了更高的流量,并且不会因为数据库和应用形成互相的影响。
看看这一步完成后系统的图示:这一步涉及到了这些知识体系:这一步架构演变对技术上的知识体系基本没有要求。
架构演变第二步:增加页面缓存好景不长,随着访问的人越来越多,你发现响应速度又开始变慢了,查找原因,发现是访问数据库的操作太多,导致数据连接竞争激烈,所以响应变慢,但数据库连接又不能开太多,否则数据库机器压力会很高,因此考虑采用缓存机制来减少数据库连接资源的竞争和对数据库读的压力,这个时候首先也许会选择采用squid 等类似的机制来将系统中相对静态的页面(例如一两天才会有更新的页面)进行缓存(当然,也可以采用将页面静态化的方案),这样程序上可以不做修改,就能够很好的减少对webserver的压力以及减少数据库连接资源的竞争,OK,于是开始采用squid来做相对静态的页面的缓存。
大型网站架构一览1.底层架构底层架构主要包括操作系统、网络和存储。
对于大型网站来说,常见的操作系统包括Linux、Windows Server等。
在网络方面,常见的技术有TCP/IP、HTTP、DNS等。
存储方面,大型网站通常采用分布式存储技术,如Hadoop、Cassandra等。
2.后端架构后端架构主要负责处理数据逻辑和业务逻辑。
数据库是后端架构的核心之一,常见的数据库技术包括MySQL、Oracle、MongoDB等。
在分布式系统中,常用的技术有消息队列系统(如Kafka、RabbitMQ)、引擎(如Elasticsearch)和缓存系统(如Redis、Memcached)等。
此外,后端架构还需要有高可用性和弹性扩展能力。
为了实现这一点,一种常见的解决方案是采用微服务架构,将复杂的系统拆分为多个小型的服务,并通过服务间的通信实现功能的协同工作。
常见的微服务框架有Spring Cloud、Dubbo等。
3.前端架构前端架构主要负责展示界面和与用户的交互。
前端技术框架根据不同的需求和场景选择。
常见的前端技术包括HTML、CSS和JavaScript。
在前端开发中,最常见的框架是React、Angular和Vue.js。
这些框架提供了组件化、虚拟DOM等功能,使得前端开发更加简单和高效。
此外,前端开发还需要与后端进行数据交互,在这方面,常用的技术有Ajax、Fetch和Axios等。
此外,前端性能优化也是一个重要的议题。
为了提升网站的加载速度和用户体验,前端开发人员可以采用一系列的技术手段,如压缩和合并JavaScript和CSS文件、使用图片懒加载、使用CDN加速等。
综上所述,大型网站的架构涉及到底层架构、后端架构和前端架构。
在设计和选择技术框架时,需要根据需求和场景来确定最合适的方案,以实现高可用性、弹性扩展能力和良好的用户体验。