【服务器架构】网站架构要素和高性能架构

news/2024/5/17 11:26:17/文章来源:https://blog.csdn.net/baidu_39511645/article/details/78445098

为了使网站的能够应对高并发访问,海量数据处理,高可靠运行等一系列问题,我们可以选择横向或纵向两个方向来入手


基本思路

首先可以对整个架构进行分层,一般可以分为 应用层服务层数据层;实践中,大的分层结构中还可以继续分层,比如 应用层还可以继续分为 视图层 和 业务逻辑层,服务层也可以继续细分为 数据接口层 逻辑处理层 等

通过分层,我们把一个庞大的系统切分为不同的部分,便于分工开发和维护;各层之间相互有一定的独立性,在网站的开发中可以根据不同的需求进行相应的调整

逻辑上分层之后,在物理部署上也可以根据需求制定不同的策略,刚开始可以部署在同一台物理机上,但是随着业务的发展,必然要对不同的模块进行分离部署

分层架构不仅仅是为了规划软件的逻辑结构以便于开发维护,随着网站的发展,分层架构对网站的高并发分布式架构来说尤为重要

进行了分层以后,接下来可以从纵向进行业务分割

根据不同的业务模块一个项目划分成不同的模块交给单独的团队去开发部署,完成后分别部署在不同的服务器上,通过链接进行互联

再根据不同情况来对不同的节点进行冗余来保证网站的高可用性

接下来进行缓存,CDN,反向代理等等的优化,这里以后再细说


好了,现在我们开始进入正题

架构要素

首先,对于一个高访问量,大数据量的网站我们需要考虑什么呢?


性能

首先就是性能了,性能是一个网站的的重要指标,除非是没得选择,就这一个网站,不然用户是绝对不会忍受一个超级慢的网站

正因为性能问题无处不在,解决性能问题的方式也各种各样,从用户请求一个 url 开始,进行的每一个环节都可以进行优化;根据上面的分层,可以大致从三个方面进行优化,应用层优化,服务层优化,数据层优化

涉及到的知识就是 web 前端的优化,应用服务器端的优化和数据的存储,索引,缓存等,这些在后面的内容里会分别展开细说

但性能只是一个网站的必要条件,除此之外,因为无法预知网站可能会面临的压力或是攻击,我们还要保证网站在各种情境下(高并发,高负载,持续压力不均匀等)保持稳定的性能


可用性

对于大型网站而言,出现宕机的情况是可怕的,因为你可能有上千万的用户量,短短几分钟的宕机都有可能导致网站声誉扫地,如果是电商类的网站,更可能会导致用户的财产损失,甚至会摊上官司,那时候损失的就不仅是金钱和用户了

因此我们要保证能够提供每天 24 小时的可用,但实际中服务器并不能保证每天 24 小时都能平稳的运行,可能出现硬件问题,也可能出现软件问题,总之问题总是会有的

所以我们高可用设计的目标就是在某些服务器宕机的情况下,也能够保证服务或应用正常运行

网站高可用的主要手段是 冗余,应用部署在多台服务器上同时提供访问,数据存储在多台数据服务器之间互相进行热备份,这样任何一台服务器宕机都不会影响服务或应用的整体,也不会产生数据丢失

对于应用服务器而言,多台应用服务器通过一个负载均衡设备组成一个集群同时对外提供服务,当一台服务器宕机后,服务切换到其他服务器上继续执行,这样就可以保证了网站的高可用性,前提是应用服务器不允许存储用户会话信息,否则将会丢失,这样即使用户请求转接到其他服务器上面也无法继续执行

对于数据存储服务器,要提供服务器之间的实时备份,这样当一台服务器宕机的时候,将数据访问切换到其他服务器上,并进行数据恢复和备份

衡量一个系统架构设计是否满足高可用的目标,就是假设其中一台或多台服务器宕机以及出现各种不可预期的问题时,系统整体是否依然可用


伸缩性

面对着大量用户的高并发访问和海量的数据存储,不可能只用一台服务器就能够满足全部需求,存储全部数据

通过 集群 的方式将多台服务器组成一个整体共同提供服务,所谓 伸缩性 就是指通过不断向集群中加入服务器的手段来应对不断上升的用户并发访问压力和不断增长的数据存储需求

对于应用服务器集群,只要服务器上不存储数据,所有的服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入新的服务器

对于缓存服务器而言,加入新的服务器可能会导致缓存路由失效,从而导致大部分的缓存数据都无法访问,需要改进缓存路由算法来保证缓存数据可访问

关系数据库虽然支持数据复制,主从热备份等机制,但是很难实现大规模集群的可伸缩性


可扩展性

网站的扩展性直接关系到网站功能模块的开发,网站快速发展,功能也不断的增加

网站架构的可扩展性的主要目的是使其能够快速的应对需求变化

是为了能够在增加新业务时,尽量实现对现有产品无影响,不需要改动或是改动很少现有业务就能够上线新产品;不同的产品业务之间的耦合度很小,一个产品或业务的改动不会对其他造成影响

大型网一定会吸引到第三方开发者,调用网站服务,开发周边产品,扩展网站业务,这都需要网站提供开放平台接口


安全性

最后的就是安全性了,互联网是一个开放的平台,任何人在任何地方都可以访问网站,安全架构就是保护网站不受恶意的访问和攻击,保护数据不被窃取


性能,可用性,伸缩性,扩展性,安全性使网站架构的几个核心要素,我们网站架构的目的主要就是为了解决这几个问题,接下来都会分别进行介绍


高性能架构

说到高性能,在不同角色的眼中对于性能的定义也不同

  • 用户视角: 用户感受到的性能,就是从提交后到看到页面的时间,不同计算机性能的差异,不同浏览器解析 HTML 的速度,不同网络提供商提供的互联网服务的速度,这些差异都会导致实际时间远大于服务器处理请求的时间
    实践中,我们可以用一些前端架构优化的手段,通过优化 HTML 样式,利用浏览器异步和并发的特性,调整缓存策略,使用 CDN 服务,反向代理等,使用户能够尽快的看到内容,即使不对应用服务优化,也能够很好地改善用户体验

  • 开发者视角: 开发者更关注的是应用服务器的性能,包括响应延迟,系统吞吐量,并发处理,系统稳定性等> 主要优化手段可以利用缓存加速数据读取,使用集群提高吞吐量,使用异步加快请求响应,优化代码改善程序等

  • 运维人员视角: 对于运维人员,会更关注一些基础设施的性能和利用率,这里不再多说


性能测试指标

主要的性能测试指标有 响应时间 并发数 吞吐量 性能计数器 等

  • 响应时间
    指的是从发出这个请求开始到接收到数据的时间,一般情况下这个时间都非常非常的小甚至小于测试的误差值,所以我们可以采用重复请求的方式来获取具体的响应时间,比如请求十万次,记录总时间,然后计算出单次请求的时间

  • 并发数
    指能够同时处理的请求数目,对于网站而言,即并发用户数> 有几个词可能会产生混淆,这里解释一下

网站系统用户数 > 网站在线用户数 > 网站并发用户数

  • 吞吐量
    是单位时间能能够处理的请求数,体现的系统的整体处理能力> 衡量指标有很多,可以是 请求数/秒 页面数/秒 访问人数/天 处理业务数/小时 等> 常用的量化指标有 TPS(每秒事务数) HPS(每秒 HTTP 请求数) QPS(每秒查询数) 等

  • 性能计数器
    描述服务器或操作系统的一些性能指标,包括系统负载(System Load),线程数,内存使用,磁盘和网络 I/O 等,当这些值超过警告值(安全临界值)时,就会想开发运维人员报警,及时处理异常


性能测试方法

性能测试是一个统称,具体可以分为 性能测试负载测试压力测试稳定性测试

  • 性能测试
    以初期设计的指标为预期目标,不断对系统施压,看系统在预期的范围内,能否达到预期的性能

  • 负载测试
    对系统不断增加并发请求以增加系统压力,直到系统某项或多项指标达到安全临界值,这时继续对系统施加压力,系统的处理能力会有所下降

  • 压力测试
    在超过安全负载的情况下,继续施压,直到系统崩溃或不再能够处理任何请求,以此来计算系统的最大压力承受能力

  • 稳定性测试
    在一定的压力(不均匀施压)下,系统能够稳定的运行较长时间



如上图所示,a-b 区间内就是网站日常的运行区间,绝大多数时间都处于这一区间内;而 c 点相当于系统的最大负载点,b-c 段就是因某些原因访问量超过了日常访问压力;超过了 c 点后,继续增加压力,这时候系统的性能就开始下降,但是资源消耗会更多,直到 d 点,系统的崩溃点,超过这个点继续加压的话,系统将不能处理任何请求

性能测试反映的是系统的处理能力,与其对应的是用户的等待时间(响应时间),如下如所示:


各点与上面的性能测试图都相互对应,直到系统崩溃,用户失去响应


性能优化策略

首先要定位问题产生原因,排查不同环节的日志,分析哪个环节的响应时间与预期不相符,然后分析影响性能的原因,是代码问题还是架构设计不合理,或者系统资源不足

然后就是性能优化,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_805952.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用python并发模块进行网站的状态检测

python curl.py #!/usr/bin/python # -*- coding: utf-8 -*- import httplib #连接服务器 connhttplib.HTTPConnection(www.dnspod.cn) #发送HTTP请求 conn.request(GET,url) #得到结果 resultconn.getresponse() #获取HTTP请求结果值。200为成功 resu…

某个网站浏览器指纹提取算法

为什么80%的码农都做不了架构师?>>> function getFingerprint() {var b "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3408.400 QQBrowser/9.6.12028.400"…

网站被黑——bugku

刚刚做了bugku的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!&…

分享一些好用的网站

前言 这两年收藏了不少网站,特地整理一下,把一些大家都可能用得上的分享出来,希望能对你有用。 考虑到有一些网站大多数人都知道,所以我就不列出来了。 我把这些网站分为了几大类: 工具类素材类社区类工具类 1、start.…

JSON.parseObject 和 JSON.toJSONString 实例

JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解…

未备案或未接入,该网站暂时无法访问,网站未备案。

2019独角兽企业重金招聘Python工程师标准>>> 该网站暂时无法访问 尊敬的用户,您好 很抱歉,该网站暂时无法访问,可能由以下原因导致: 原因一:未备案或未接入;根据《非经营性互联网信息服务备案管…

背景图页面缩小会变形_湖南网站建设背景图这样使用,让你的网站瞬间提升好几个档次...

虽然湖南网站建设中背景图片的运用相对麻烦和困难,但是运用得好会对网站推广发展大有裨益。另外一方面因为背景图片往往会涉及到不同终端的兼容和显示问题,设计师可能要考虑到在不同平台、终端的效果呈现和程序匹配。那么湖南网站建设背景图使用需要注意…

学做网站用什么服务器,做网站需要学习什么

做网站需要学习什么?随着现在互联网发展的普及和完善,越来越多的人希望能通过互联网进行创业,但在互联网上创业就必须搭建自己的网站平台。那么我要创建一个网站,需要掌握和了解哪些基础要点呢?1、清楚2、常用建站工具…

tomcat网站测试linux,Tomcat6 Tomcat7对比测试

0摘要本文首先简述了Tomcat7的新特性和增强功能。然后对比tomcat6做了性能测试,测试结果表明,tomcat7的在性能上没有明显的提升,而主要贡献在于Servlet 3.0,内存检测泄露和增强的安全特性。1 Tomcat7的特性目前tomcat7已经发布到第…

Wordpress 插件出现漏洞,网站可能被攻击者接管

开发四年只会写业务代码,分布式高并发都不会还做程序员? 据安全研究人员警告,因旧版 Wordpress Simple Social Button 插件出现漏洞,使用这个插件的网站应该尽快更新软件,避免攻击者攻击并接管网站。Simple Social B…

10个国外免费下载电子书网站

1、FreeBookSpot FreeBookSpot是一个在线免费电子书下载网站。网站拥有96个类别,大约71.97 GB的免费电子书籍。用户可以搜索和分类下载免费书籍,如科学,工程,编程,小说和其他许多书籍。FreeBookSpot无需注册&#xff0…

云速建站配置https证书

2019独角兽企业重金招聘Python工程师标准>>> 1、购买证书,阿里云、华为云均有,自行购买下载即可。 2、购买服务器,用于配置证书,同时在服务器上安装web服务器,配置https 3、云速建站后台对证书的域名添加证…

如何让设置样式让网站文字无法复制

今天在解决一个网站的时候偶然遇到了网站文字无法复制。 到最后终于找出来原因。现在分享出来给你大家 原因一 我的文字无法复制的一个原因是 被包裹了 A 标签 a标签如下 这样的话,会给页面带上一个类似于遮罩的感觉,所以 果断的把 href 去掉这样就可…

网站开发快速入门教程-3

声明:本网站开发快速入门教程系列为刘兴(http://deepfuture.iteye.com/)整理,如果转载请注明转载来源 WEB服务器原理 您是否曾经对将此网页传送给您的机制感到好奇?假设此刻您正坐在计算机前在浏览器中查看这个网页。在您单击这个网页的链接…

在线生成彩字在线制作动态特效文字的2个网站

1Textanim - 是一个在线生成动态文字效果的站点,操作简单,输入想要生成的英文字母或单词,选择字体和彩字样式,就能可以轻松生成。提供了上百种的花纹可以选择使用。提供设置项包括:1.字体2.字体大小3.背景颜色4.自动大小5.影音位置6.动画延时…

设计人员一些常用的网站

亚洲ci网——http://www.asiaci.com/ (点击这里) 中国ci网—— http://www.cn-cis.com/ (点击这里) 中国包装设计网—— http://www.chndesign.net/ (点击这里) limon企业识别—— http://www.limon.com.cn/ (点击这里) 中国色彩—— http://www.cncolor.net/ (点击这里) logo吧…

OpenSource事业受挫,开源网站BerliOS因资金问题年底将关闭

BerliOS.de今天释出的新闻(https://developer.berlios.de/forum/forum.php?forum_id37450)我之前在这个网站上的资源全是开源的,代码由世界各地的爱好者编写(主要还是欧洲的),project的文档什么的都很详细…

scrip如何显示值到网页_在线免费用!这个网站帮你测试响应式网页效果

链接:https://www.uisdc.com/everysize#现在很多人是通过智能手机或平板电脑浏览网页,在网页设计上就要考量到如何让不同尺寸屏幕大小也能正常显示,以往会制作成电脑版和手机版两种格式,后来多半以响应式网页设计(Responsive web …

Next Door,基于“邻居”的社交网站

编者按:社交网站(SNS)是旨在帮助人们建立社会性网络的互联网应用服务,本文突出介绍了与Facebook等基于“朋友”关系的社交网站大相径庭基于“邻居”的一种社交网站。网友们众说纷纭,有的说“邻居关系特殊,应该鼓励线下交流”&…

如何在网站集的首页上显示出我的所有任务

在网站集的首页添加“内容查询 Web 部件”部件,并修改其属性如下,其他的保持默认值。 设置完后就能正常显示了,用该部件还能实现其他的信息显示。有一点需要注意的是,用系统帐户身份浏览时筛选条件“分配对象”将造成查询不到任何…