大型网站的架构演化,发展历程

本文介绍了大型网站从初级阶段到分布式服务的架构演化过程,包括应用与数据分离、使用缓存、应用服务器集群、数据库读写分离等关键步骤,并探讨了高性能、高可用性的实现方法。

今天开始读《大型网站技术架构:核心原理与案例分析》,觉得这本书将的全面而又通俗易懂,有兴趣的同学可以看一看。下面对大型网站的架构演化,发展历程做了整理,小伙伴们一起来学习一下。 

传统企业应用面对的挑战:复杂,千变万化的业务逻辑。(功能性需求) 
大型网站面对的挑战:处理超大量的用户访问和海量的数据处理。(非功能性需求)

网站核心架构要素:性能,可用性,伸缩性,扩展性,安全性

大型网站软件系统的特点: 
(1)高并发,大流量:需要面对高并发用户,大流量访问。 
(2)高可用:系统7*24小时不间断服务。大型互联网网站的宕机时间通常会成为新闻焦点。 
(3)海量数据:需要存储,管理海量数据,需要使用大量服务器。 
(4)用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的。在国内,还有各个运营商网络互通难的问题。而中美光缆的数次故障,也让一些国外用户依赖较大的网站不得不考虑在海外建立数据中心。,发布频繁: 
(5)安全环境恶劣:由于互联网的开放性,使得互联网更容易受到攻击,大型网站几乎每天都被黑客攻击。 
(6)需求快速变更:和传统软件产品或企业应用系统不同,互联网产品为快速时应市场,满足用户需求,其产品发布频率是极高的。 
(7)渐进式发展:与传统软件产品或企业应用系统一开始就规划好全部功能和非功能需求不同,几乎所有的大型互联网网站都是从一个小网站开始,逐渐发展起来的。

=======》其实大型网站存在的难题,传统软件产品和企业应用都存在,只是没有暴漏出来,用户比较局限。

大型网站的架构演化,发展历程

(1)初级阶段

大型网站都是从小型网站发展而来,小型网站最开始没有太多人访问,只需要一台服务器就够了。应用程序,数据库,文件等所有资源都在同一台服务器上,通常服务器操作系统用linux,部署在Tomcat上,使用MySQL数据库,汇集各种免费的开源软件及一台廉价的服务器就可以网站的发展之路了。 

(2)应用程序和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问,导致性能越来越差,越来越多的数据导致存储空间不够。这个时候就需要将应用和数据分离。 
应用和数据分离后,整个网站使用三台服务器:应用服务器,文件服务器,数据服务器。 
这三台服务器对硬件资源的需求各不相同:应用服务器需要处理大量的业务逻辑,需要更快更强大的CPU;数据库服务需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的内存;文件服务器需要存储大量用户上传的文件,需要更大的硬盘。

(3)使用缓存改善网站性能

网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。 
既然大部分的业务访问集中在一小部分数据上,那么可以将这一小部分数据缓存在内存中,减少数据库的访问压力,提升网站的数据访问速度,改善数据库的写入性能。

网站使用的缓存分为两种:应用服务器本地缓存和专门的分布式服务器远程缓存。 
本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现跟程序争内存的情况。 
远程分布式缓存可以使用集群的方式,部署大内存的服务器做为专门的缓存服务器,可以理论上做到不受内存容量的限制。 

(4)应用服务器集群

当一台服务器的处理能力和存储空间不足时,不要企图去更换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问和存储压力。 
对网站架构而言,只要能通过增加一台服务器改善负载压力,就可以通过同样的方法持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩性集群架构设计中较为成熟的一种。 
通过负载均衡调度服务器,可将原来来自用户浏览器的访问请求分发到服务器集群的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器不再成为整个网站的瓶颈。

(5)数据库读写分离

网站在使用缓存后,使绝大部分数据操作都可以不通过数据库完成,但是仍有一部分数据(缓存访问不命中,缓存过期)和全部的写操作需要访问数据库,在网站用户到一定规模,数据库因为压力过高而成为网站的瓶颈。 
目前大部分的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器数据更新到两外一台服务器上,实现读写分离,从而改善数据库的负载压力。 

(6)使用反向代理和CDN加速

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,用户请求网站的时候,可以从距离自己近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房。 

(7)分布式文件系统和分布式数据库系统

分布式数据库是网站数据拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。网站更常用的数据库拆分手段是业务分库,将不同的业务的数据库部署在不用的物理服务器上。 

(8)使用NoSQL和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎。 

(9)业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。具体到技术上,也会根据产品线划分,将一个网站拆分成不同的应用,每个应用独立部署维护。 

(10)分布式服务

随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增长,部署维护变得越来越困难。既然每个应用系统都需要执行许多相同的业务操作,比如用户管理,商品管理等,那么可以将这些公共应用提取出来,单独部署。应用系统只需要管理界面,通过分布式服务调用公共业务服务完成具体的业务操作。

多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法旨在应对电力系统中源荷不确定性带来的挑战,通过构建分布鲁棒优化模型,有效处理多源输入下的动态最优潮流问题,提升系统运行的安全性和经济性。文中详细阐述了模型的数学 formulation、求解算法及仿真验证过程,并提供了完整的Matlab代码实现,便于读者复现与应用。该研究属于电力系统优化调度领域的高水平技术复现,具有较强的工程实用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事电力系统优化调度的工程技术人员,尤其适合致力于智能电网、鲁棒优化、能源调度等领域研究的专业人士。; 使用场景及目标:①用于电力系统多源环境下动态最优潮流的建模与求解;②支撑含可再生能源接入的电网调度决策;③作为鲁棒优化方法在实际电力系统中应用的教学与科研案例;④为IEEE118节点系统的仿真研究提供可复现的技术支持。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注不确定变量的分布鲁棒建模、目标函数构造及求解器调用方式。读者应具备一定的凸优化和电力系统分析基础,推荐配合YALMIP工具包与主流求解器(如CPLEX、Gurobi)进行调试与扩展实验。
内容概要:本文系统介绍了物联网与云计算的基本概念、发展历程、技术架构、应用场景及产业生态。文章阐述了物联网作为未来互联网的重要组成部分,通过RFID、传感器网络、M2M通信等技术实现物理世界与虚拟世界的深度融合,并展示了其在智能交通、医疗保健、能源管理、环境监测等多个领域的实际应用案例。同时,文章强调云计算作为物联网的支撑平台,能够有效应对海量数据处理、资源弹性调度和绿色节能等挑战,推动物联网规模化发展。文中还详细分析了物联网的体系结构、标准化进展(如IEEE 1888、ITU-T、ISO/IEC等)、关键技术(中间件、QoS、路由协议)以及中国运营商在M2M业务中的实践。; 适合人群:从事物联网、云计算、通信网络及相关信息技术领域的研究人员、工程师、高校师生以及政策制定者。; 使用场景及目标:①了解物联网与云计算的技术融合路径及其在各行业的落地模式;②掌握物联网体系结构、标准协议与关键技术实现;③为智慧城市、工业互联网、智能物流等应用提供技术参考与方案设计依据;④指导企业和政府在物联网战略布局中的技术选型与生态构建。; 阅读建议:本文内容详实、覆盖面广,建议结合具体应用场景深入研读,关注技术标准与产业协同发展趋势,同时结合云计算平台实践,理解其对物联网数据处理与服务能力的支撑作用。
标题基于Java的停车场管理系统设计与实现研究AI更换标题第1章引言介绍停车场管理系统研究背景、意义,分析国内外现状,阐述论文方法与创新点。1.1研究背景与意义分析传统停车场管理问题,说明基于Java系统开发的重要性。1.2国内外研究现状综述国内外停车场管理系统的发展现状及技术特点。1.3研究方法以及创新点介绍本文采用的研究方法以及系统开发中的创新点。第2章相关理论总结Java技术及停车场管理相关理论,为系统开发奠定基础。2.1Java编程语言特性阐述Java的面向对象、跨平台等特性及其在系统开发中的应用。2.2数据库管理理论介绍数据库设计原则、SQL语言及在系统中的数据存储与管理。2.3软件工程理论说明软件开发生命周期、设计模式在系统开发中的运用。第3章基于Java的停车场管理系统设计详细介绍系统的整体架构、功能模块及数据库设计方案。3.1系统架构设计阐述系统的层次结构、模块划分及模块间交互方式。3.2功能模块设计介绍车辆进出管理、车位管理、计费管理等核心功能模块设计。3.3数据库设计给出数据库表结构、字段设计及数据关系图。第4章系统实现与测试系统实现过程,包括开发环境、关键代码及测试方法。4.1开发环境与工具介绍系统开发所使用的Java开发环境、数据库管理系统等工具。4.2关键代码实现展示系统核心功能的部分关键代码及实现逻辑。4.3系统测试方法与结果阐述系统测试方法,包括单元测试、集成测试等,并展示测试结果。第5章研究结果与分析呈现系统运行效果,分析系统性能、稳定性及用户满意度。5.1系统运行效果展示通过截图或视频展示系统实际操作流程及界面效果。5.2系统性能分析从响应时间、吞吐量等指标分析系统性能。5.3用户满意度调查通过问卷调查等方式收集用户反馈,分析用户满意度。第6章结论与展望总结研究成果,提出系统改进方向及未来发展趋势。6.1研究结论概括基于Java的停车场管理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值