大型网站架构之性能篇

news/2024/5/20 15:47:27/文章来源:https://xiyuan.blog.csdn.net/article/details/102328156

网站的高性能架构(性能)

不同视角下的网站性能有着不同的标准,也有不同的优化手段。
1.用户视角的网站性能优化
通过优化页面HTML样式、利用浏览器端的并发和异步特性(即用户不用等待结果)、调整浏览器缓存策略、使用CDN服务、反向代理等手段,从而
实现不优化应用程序和架构,也能使浏览器尽快展示用户感兴趣的内容。
2.开发人员视角的网站性能优化

  • 使用缓存加速数据读取
  • 使用集群提高吞吐量
  • 使用异步消息加快请求响应以及实现削峰
  • 使用代码优化改善程序性能。

3.运维人员视角的网站性能优化

  • 建设优化骨干网
  • 使用高性价比定制服务器
  • 利用虚拟化技术优化资源利用

性能测试的指标包括
响应时间:指应用执行一个操作需要的时间,包括从发出请求到收到最后响应数据所需要的时间。
并发数:指系统能够同时处理请求的数目,反应系统的负载能力 (正在运行的请求)。
吞吐量:指单位时间内系统处理的请求数量,体现系统整体处理能力(一天可以处理的总请求数)。
性能计数器:描述服务器或者操作系统性能的一些数据指标,在linux系统通过top命令进行查看。

性能测试的方法
性能测试:对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试:对系统继续施加压力,如果某种资源进入饱和状态,这个时候系统的处理能力会下降。
压力测试:超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或者不能再处理任何请求,以此获得系统最大压力承受能力。
稳定性测试:被测试系统在特定硬件、软件、网络环境下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。
在这里插入图片描述

在这里插入图片描述
性能测试的目的就是找到系统系统最佳运行点、系统最大负载点以及系统崩溃点,从而合理选择服务器部署方式。

Web前段性能优化

a.浏览器访问优化
1.减少http请求:通过合并CSS、合并JavaScript、合并图片从而减少请求次数。
2.使用浏览器缓存:通过设置HTTP头中Cache-Control和Expires的属性,设定浏览器缓存生命周期。在更新静态资源的缓存时,应采用逐量更新的方法。
3.启动压缩:在服务器端对文件进行压缩,在浏览器对文件进行解压,可以有效减少通讯传输的数据量。
4.CSS放在页面最上面、JS放在页面最下面:因为浏览器在下载所有CSS之后才会对整个页面进行渲染,而浏览器在加载JS立即执行。
5.减少Cookie传输:Cookie因为存储在浏览器中会包含在每次请求和响应中,同时在对静态文件进行访问时,Cookie是没有实际意义的。

b.在网络服务商服务器中使用CDN加速

c.在网站服务器之前使用反向代理服务器,使用其缓存模块对请求进行缓存处理

应用服务器性能优化

a.使用缓存(网站性能优化第一定律:优先考虑使用缓存优化性能。)
缓存就是将数据放在离计算最近的位置。缓存的本质是内存hash表,网站应用中,数据缓存以键值对的形式存储在内存Hash表中。

缓存雪崩问题
缓存雪崩,是指在某一个时间段,缓存集中过期失效。
解决方法:根据业务特点,对不同的“记录”设置不同的失效周期。

缓存预热
新启动的缓存系统如果没有任何数据,在重建缓存数据的过程中,系统的性能和数据库负载都不太好,那么最好在缓存系统启动时就把热点数据加载好,
如一些元数据—城市地名列表、类目信息等。

缓存穿透问题
缓存穿透,是指查询一个数据库一定不存在的数据。 假如有恶意攻击,就可以利用这个漏洞,对数据库造成压力,甚至压垮数据库。即便是采用UUID,也是很容易找到一个不存在的KEY,进行攻击。
解决方法: 如果从数据库查询的对象为空,也放入缓存,只是设定的缓存过期时间较短,比如设置为60秒

缓存击穿问题
缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库。
解决方案:对热点数据设置比较长的生命周期或者永不过期。

缓存的并发竞争问题
多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。
解决方法: CAS类的乐观锁(即redis事务机制)

分布式缓存框架
分布式缓存架构通常有两类

  • 以JBoss Cache为代表的需要更新同步的分布式缓存
  • 以Memcached为代表的不相互通信的分布式缓存(主流的方式)

b.异步操作(任何可以晚点做的事情都应该晚点再做)
通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而肖平高峰期的并发事务。
消息队列的消费端既可以是应用程序也可以直接是数据库。

c.使用集群(众人拾柴火焰高)
借助负载均衡服务器,将并发请求分发到多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢。

d.代码优化
代码优化通常从以下方面:

  • 多线城:因为IO和多CPU,通过多线程能够最大限度使用CPU资源。
  • 复用:采用单例或者对象池实现对数据库连接、网络通信连接、线程、复杂对象等资源的复用。
  • 数据结构:灵活组合各种数据结构改善数据读写和计算特性可极大优化程序的性能。
  • 垃圾回收:有助于程序优化和参数调优,以及编写内存安全的代码。

存储性能优化

a.存储介质:机械硬盘和固态硬盘
b.读写算法:B+树和LSM树
c.访问技术:Raid和HDFS

在这里插入图片描述

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

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

相关文章

大型网站之高可用篇

网站的高可用架构(高可用) 由于种种情况,在业务中硬件故障是常态,所以网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保持并能够并访问。 高可用的主要手段:数据和服务的冗余备份及失…

大型网站之伸缩篇

网站的伸缩性架构(伸缩性) 绝大数网站都是渐进式成长的,在这个过程中最重要的技术是就是使用服务器集群,通过不断地向集群中添加服务器来增加整个集群的处理能力。 网站架构的伸缩性设计 网站的伸缩性设计分为两大类 根据功能进…

大型网站之扩展篇

网站的可扩展架构(扩展性) 伸缩性:通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。 扩展性:指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 网站的可扩展性,依托于系…

大型网站之安全篇

网站的安全框架(安全性) a.黑客攻击 XSS攻击 XSS攻击即跨站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。 常见的XSS攻击分为 反射型&am…

使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信

亲测,已经建立了https链接 参考链接: https://blog.csdn.net/guoxiaojie_415/article/details/80554109 https://www.cnblogs.com/kezi/articles/11512420.html

浏览器版本过高导致无法访问网站 burpSuiteBrowser

错误: 建立安全连接失败 连接到 172.24.11.101 时发生错误。对等端使用了不支持的安全协议版本。 错误代码:SSL_ERROR_UNSUPPORTED_VERSION 由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。 建议向此网站的管理员反馈这…

js 获取服务器ip_如何提高香港服务器网站的访问速度

从选择服务器上入手1.选择直连国内网络骨干的机房 直连国内网络骨干机房通常节点都比较少。通常数据在经过路由器进行转发时,都需要花费一定的时间,因而节点比较少的机房,它所提供的香港服务器多相对快一些,具体我们可以通过ping服…

php一维数组合并为二维数组,php输出数据并转换成若干一维数组最后合并为一条二维数组 - 傲世零零个人技术网站...

代码功能:php输出数据并转换成若干一维数组最后合并为一条二维数组//数据库连接require(db.php);//查询语句$sql2 "select * from xc_pic where xcid89 ";$result2 mysql_query($sql2,$conn);$dd0;while($row2 mysql_fetch_array($result2)){$dd$dd1…

逆向某电影网站signKey参数

1.打开我们要获取数据的页面 这里我们可以看到,这个有个加密参数signKey,猫眼好像改了,这个页面一些东西变成动态渲染了。他会发送一个请求去请求这个数据 我们打开这个页面,可以看到 这里面都是我们要的参数,像评分呀…

补某视频网站的js,进行视频解密

前言: 前不久,有个群友在群里发了一个视频的m3u8文件,其中的key是16字节,但是就是无法进行下载。但是用m3u8下载器进行下载时,无法下载下来,我开始怀疑是有请求头检验,用代码请求了一下&#x…

java web gzip_java使用gzip对静态资源的压缩,提供web网站访问速度

一、gzip简介Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公开发布,版本号0.1,1993年2月&a…

Web大作业-关于创业计划网站制作的第二天......

嘶......转专业真的是麻烦,前有C语言大作业算法实现,现有Web工程网页要做..... 贴几张预览图吧,第一部分算是完成了,接下来还有两个部分,分别是宣传视频和个人计划的安排。 另外,学校的校园网真菜&#x…

Web大作业-关于创业计划网站制作的第三天......

代码都是我一行一行敲下来的,虽然我相信得分不会很高(确信)。 但是第二部分算是完成了,就是宣传视频部分,让三个网页互相连接,其实我还想用用js把网站写活,奈何能力有限。 第三部分我打算讲述自己的创业计划&#xf…

Web大作业-关于创业计划网站制作的第四天......

主要是登录和注册界面。 还有自己的创业计划。差不多完工了。

5 qlineedit获取内容_SEO内容营销:你应该关注的5个考核指标!

在SEO工作中制定内容营销策略是一个必不可少的工作,毕竟内容为王的时代,任何的营销与推广我们都脱离不了内容,每隔一段时间SEO主管都会对内容营销做复盘,通过数据分析,查看相关指标,是否达到预期。 那么&am…

爬虫学习记录(四)————利用pyquery,re爬取静态网站信息存储到mongodb中

爬虫学习记录(四)————利用pyquery,re爬取静态网站信息存储到mongodb中静态页面爬取引入需要的包定义获取html文件的基本函数定义获取所有详情页的url函数定义解析详细信息的函数将函数链接起来存储到mongodb中链接mongodb的基本参数定义存…

《筑巢引凤:高黏度社会化网站设计秘诀》读书笔记

难怪所有人都想在亚马逊购物,它有其他任何网站都没有的信息——真相(*备注:我们网站的特点:真实性、扩展性) 处于群体之中,围绕群体活动,却又保持个人独立性,这种关系深刻地影响着我…

Java实现一个GUI的SEO软文生成器v1

项目CODE地址: https://code.csdn.net/u012995856/autogenseoarticle/tree/master 效果图: 目录结构: 功能: GUI输入,替换现成模板里的变量,生成新文件 Generator.java package cn.pangPy…

网站搭建的环境配置:Apache+PHP+MySQL

1 网站基本概念 网站说白了就是把一些东西放到哪里供其他人访问,并提供了一些可以交互的接口的地方。如果要实现这样一个地方首先,需要一个能放东西的地方这就是服务器。其次,我们要找到这个地方,然而有很多这样的地方&#xff0c…

ASP.NET MVC5 网站开发实践 - 概述

ASP.NET MVC5 网站开发实践 - 概述前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了。1月26日晚上在群里跟怒放 他们讨论这个问题,结论是即使只是一个小…