大型网站技术架构(2):架构要素和高性能架构

news/2024/5/21 0:35:46/文章来源:https://blog.csdn.net/weixin_33895516/article/details/86228132

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


基本思路

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

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

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

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

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

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

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

接下来进行缓存,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_778763.aspx

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

相关文章

大型网站技术架构-入门梳理

罗列了大型网站架构涉及到的概念,附上了简单说明前言本文是对《大型网站架构设计》(李智慧 著)一书的梳理,类似文字版的“思维导图”全文主要围绕“性能,可用性,伸缩性,扩展性,安全”这五个要素性能&#x…

电商技术解密:电商网站会存在哪些安全隐患

2019独角兽企业重金招聘Python工程师标准>>> 在电商的研发体系中有一个叫做“风控”的部门,整个部门负责保障整个网站的安全、可靠。是一个比较神秘的组织,每天需要与形形色色的黑客、黄牛斗智斗勇。 那么一个电商网站会存在哪些安全隐患呢&a…

《Axure RP7网站和APP原型制作从入门到精通(60小时案例版)》一导读

前 言 Axure RP7网站和APP原型制作从入门到精通(60小时案例版)原型制作是在正式开始视觉设计或编码之前最具成本效益的可用性跟踪手段。Axure RP7是行业中最知名的原型设计工具之一。随着专业工具的出现,设计用户体验从未如此令人兴奋&#x…

c++多久能精通_新手入门学习SEO优化需要多久?

关于新手学习SEO入门需要多久的问题,这个就需要具体的规划一下了。何为SEO优化入门?客绪方网络SEO小方是这样理解的:那就是我们拿到一个网站以后,知道SEO优化是怎么回事,也知道优化网站需要做哪些事情,如果…

CA安全会提出伦敦协议 旨在减少“安全”的钓鱼网站

2019独角兽企业重金招聘Python工程师标准>>> 证书颁发机构们搞了个伦敦协议试图改进OV和EV证书,但浏览器厂商会支持吗? 伦敦协议是SSL行业如此独特的一个很好的例子。 很少有行业中的五家顶级公司聚集在一起,试图解决他们销售的产…

python 验证码识别示例(一) 某个网站验证码识别

某个招聘网站的验证码识别,过程如下 一: 原始验证码: 二: 首先对验证码进行分析,该验证码的数字颜色有变化,这个就是识别这个验证码遇到的比较难的问题,解决方法是使用PIL 中的 getpixel 方法…

服务器上安装两个织梦网站,云服务器安装多个织梦

云服务器安装多个织梦 内容精选换一换您可以选择在云服务器上安装一个或多个应用。如需在云服务器上安装其他应用,请参考如下操作进行添加。暂时仅允许支持VR应用的云服务器安装VR应用。暂时仅允许支持3D应用的云服务器安装3D应用。暂时仅允许支持VR应用的云服务器有…

30个在线Python自学网站,再也不用到处找资料了

最近有几个小伙伴咨询怎么学习python的事情,他们有做开发的、有做运营的,很高兴大家有这么强烈的Python学习意愿。当然Python的学习,我是建议自学,首先明确自己的学习目标,例如开发自动化脚本、做数据分析等。然后可以…

Asp网站脚本漏洞的安全防范

从一个注入点到系统权限的过程。当然,这只是一个例子,在真正的过程中还有很多变化的,我主要通过这个例子来演示一下网络******的过程,接下来我们就采用相应的方法进行防范。(1)首先我们从安装iis6.0的时候做…

网站系统架构梳理-解决高负载高并发

随着互联网业务的不断丰富,网站系统架构已经细分到方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的h…

一步一步SharePoint 2007之五:向网站中添加一个子网站

何向一个现有的网站中添加一个子网站,而不是重新建立一个新的网站。当然,我们也可以重新建立一个新的网站,然后把新网站的网址加到原网站的主菜单中。不过,上述两种方法是有区别的,前者仍然是同一个网站,我…

网站架构之缓存应用(3)实现篇

这篇来讲如何利用memcached实现一级缓存,以及如何让一级缓存组件支持在企业库,memcached或者其它第三方实施方案之间的切换。memcached本人并没有太多经验,如果文中有说的不对的地方,还希望批评指出,且文中关于memcach…

【办公实用网站收集】免费模板

目录1 办公区1.1 PPT模板1.2 简历模板2 IT女孩必备2.1 经典配色2.1.1 在线取色器2.1.2 配色表2.1.3 配色收藏网站2.2 在线格式转换2.2.1 png、jpg、gif转ico图标2.2.2 API免费接口免费API接口2.2.3 在线视频处理3 网站素材3.1 免费整站模板3.2 jQuery插件库3.3 高清图库3.4 LOG…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起,安全威胁就一直伴随着网站的发展,各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击(…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时…

WF4.0实战(十七):实现自动访问网站机器人

概述篇 用WF4.0实现自动访问’机器人’,听起来有点不可思议。还是老方式,看效果,在讲述一下如何实现,最后总结,附代码下载。 这篇文章用这个’机器人’玩转了一回博客园。包括:机器人登录,机器人回帖&#…

Hexo-SEO搜索引擎优化(sitemap)

一、提交站点地图的作用 假如你在百度上搜索信息:hexo(sakura)博客: 会返回n多条搜索结果,来源于不同的平台推送,但是每条结果都会有不同的匹配度,按搜索引擎排序规则进行排序。 作为站长&am…

hexo美化(豆瓣阅读、电影、常用网站搜索页)

文章目录1.增加豆瓣阅读、电影分享页1.1预览1.2装配2.增加常用网站搜索页2.1预览2.2装配1.增加豆瓣阅读、电影分享页 1.1预览 阅读: 电影: 1.2装配 我现在用的butterfly是支持hexo-douban插件的,所以直接使用就好了。 在豆瓣注册一个账…

八大免费SSL证书-给你的网站免费添加Https安全加密

https://www.freehao123.com/top-8-free-ssl-cert/ https://www.freehao123.com/top-8-free-ssl-cert/ https://www.freehao123.com/top-8-free-ssl-cert/ 八大免费SSL证书-给你的网站免费添加Https安全加密 SSL证书,用于加密HTTP协议,也就是HTTPS。…

如何申请https证书、搭建https网站

如何申请https证书、搭建https网站 https://freessl.wosign.com/https-web.html https://freessl.wosign.com/https-web.html https://freessl.wosign.com/https-web.html 随着国内搜索引擎巨头百度启用全站https加密服务,全国掀起了网站https加密浪潮。越来越多…