大型网站背后的高性能系统架构设计

news/2024/5/10 11:35:45/文章来源:https://blog.csdn.net/weixin_34413357/article/details/92404345

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 性能测试

1.1. 性能指标

网站性能测试的主要指标有:

  • 响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。
  • 并发数 - 系统同时处理的请求、事务数。
  • 吞吐量 - TPS(每秒事务数)、HPS(每秒 HTTP 请求数)、QPS(每秒查询数)。
  • 性能计数器 - 系统负载、对象与线程数、内存使用、CPU 使用、磁盘与网络 IO 等。这些指标也是系统监控的重要参数。

1.2. 性能测试方法

  • 性能测试
  • 负载测试
  • 压力测试
  • 稳定性测试

1.3. 性能测试报告

性能测试报告示例:

68747470733a2f2f75706c6f61642d696d616765732e6a69616e7368752e696f2f75706c6f61645f696d616765732f333130313137312d336435333361333666343236303861312e706e673f696d6167654d6f6772322f6175746f2d6f7269656e742f7374726970253743696d61676556696577322f322f772f31323430.

1.4. 性能优化策略

  1. 性能分析 - 如果请求响应慢,存在性能问题。需要对请求经历的各个环节逐一分析,排查可能出现性能瓶颈的地方,定位问题。检查监控数据,分析影响性能的主要因素:内存、磁盘、网络、CPU,可能是代码或架构设计不合理,又或者是系统资源确实不足。
  2. 性能优化 - 性能优化根据网站分层架构,大致可分为前端性能优化、应用服务性能优化、存储服务性能优化。

2. 前端性能优化

2.1. 浏览器访问优化

  1. 减少 HTTP 请求 - HTTP 请求需要建立通信链路,进行数据传输,开销高昂,所以减少 HTTP 请求数可以有效提高访问性能。减少 HTTP 的主要手段是合并 Css、JavaScript、图片。
  2. 使用浏览器缓存 - 因为静态资源文件更新频率低,可以缓存浏览器中以提高性能。设置 HTTP 头中的 Cache-Control 和 Expires 属性,可以设定浏览器缓存。
  3. 启用压缩 - 在服务器端压缩静态资源文件,在浏览器端解压缩,可以有效减少传输的数据量。由于文本文件压缩率可达 80% 以上,所以可以对静态资源,如 Html、Css、JavaScrip 进行压缩。
  4. CSS 放在页面最上面,JavaScript 放在页面最下面 - 浏览器会在下载完全部的 Css 后才对整个页面进行渲染,所以最好的做法是将 Css 放在页面最上面,让浏览器尽快下载 Css;JavaScript 则相反,浏览器加载 JavaScript 后立即执行,可能会阻塞整个页面,造成页面显示缓慢,因此 JavaScript 最好放在页面最下面。
  5. 减少 Cookie 传输 - Cookie 包含在 HTTP 每次的请求和响应中,太大的 Cookie 会严重影响数据传输。

2.2. CDN

CDN 一般缓存的是静态资源。

CDN 的本质仍然是一个缓存,而且将数据缓存在离用户最近的地方,使用户已最快速度获取数据,即所谓网络访问第一跳。

cdn.png

2.3. 反向代理

传统代理服务器位于浏览器一侧,代理浏览器将 HTTP 请求发送到互联网上,而反向代理服务器位于网站机房一侧,代理网站服务器接收 HTTP 请求。

reverse-proxy.jpg

反向代理服务器可以配置缓存功能加速 Web 请求,当用户第一次访问静态内容时,静态内容就会被缓存在反向代理服务器上。

反向代理还可以实现负载均衡,通过负载均衡构建的集群可以提高系统总体处理能力。

因为所有请求都必须先经过反向代理服务器,所以可以屏蔽一些攻击 IP,达到保护网站安全的作用。

3. 应用服务性能优化

3.1. 分布式缓存

网站性能优化第一定律:优先考虑使用缓存优化性能。

缓存原理

缓存指将数据存储在相对较高访问速度的存储介质中,以供系统处理。一方面缓存访问速度快,可以减少数据访问的时间,另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算即可直接使用,因此缓存还起到减少计算时间的作用。

缓存的本质是一个内存 HASH 表。

缓存主要用来存放那些读写比很高、很少变化的数据,如商品的类目信息,热门词的搜索列表信息、热门商品信息等。

合理使用缓存

缓存数据的选择:

  • 不要存储频繁修改的数据
  • 不要存储非热点数据

数据不一致和脏读:

  • 缓存有有效期,所以存在一定时间的数据不一致和脏读问题。如果不能接受,可以考虑使用数据更新立即更新缓存策略

需要考虑缓存问题:缓存雪崩、缓存穿透、缓存预热

3.2. 异步操作

异步处理一般是通过分布式消息队列的方式。

异步处理可以解决一下问题:

  • 异步处理
  • 应用解耦
  • 流量削锋
  • 日志处理
  • 消息通讯

3.3. 使用集群

在高并发场景下,使用负载均衡技术为一个应用构建一个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢,使用户请求具有更好的响应延迟特性。

3.4. 代码优化

多线程

从资源利用的角度看,使用多线程的原因主要有两个:IO 阻塞和多 CPU。

线程数并非越多越好,那么启动多少线程合适呢?

有个参考公式:

启动线程数 = (任务执行时间 / (任务执行时间 - IO 等待时间)) * CPU 内核数

最佳启动线程数和 CPU 内核数成正比,和 IO 阻塞时间成反比。如果任务都是 CPU 计算型任务,那么线程数最多不要超过 CPU 内核数,因为启动再多线程,CPU 也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多启动线程有助于任务并罚赌,提高系统吞吐量。

线程安全问题

  • 将对象设计为无状态对象
  • 使用局部对象
  • 并发访问资源时使用锁

资源复用

应该尽量减少那些开销很大的系统资源的创建和销毁,如数据库连接、网络通信连接、线程、复杂对象等。从编程角度,资源复用主要有两种模式:单例模式和对象池。

数据结构

根据具体场景,选择合适的数据结构。

垃圾回收

如果 Web 应用运行在 JVM 等具有垃圾回收功能的环境中,那么垃圾回收可能会对系统的性能特性产生巨大影响。立即垃圾回收机制有助于程序优化和参数调优,以及编写内存安全的代码。

4. 存储性能优化

4.1. 机械键盘和固态硬盘

考虑使用固态硬盘替代机械键盘,因为它的读写速度更快。

4.2. B+数和 LSM 树

传统关系数据库的数据库索引一般都使用两级索引的 B+ 树结构,树的层次最多三层。因此可能需要 5 次磁盘访问才能更新一条记录(三次磁盘访问获得数据索引及行 ID,然后再进行一次数据文件读操作及一次数据文件写操作)。

由于磁盘访问是随机的,传统机械键盘在数据随机访问时性能较差,每次数据访问都需要多次访问磁盘影响数据访问性能。

许多 Nosql 数据库中的索引采用 LSM 树作为主要数据结构。LSM 树可视为一个 N 阶合并树。数据写操作都在内存中进行。在 LSM 树上进行一次数据更新不需要磁盘访问,速度远快于 B+ 树。

4.3. RAID 和 HDFS

HDFS(分布式文件系统) 更被大型网站所青睐。它可以配合 MapReduce 并发计算任务框架进行大数据处理,可以在整个集群上并发访问所有磁盘,无需 RAID 支持。

转载于:https://my.oschina.net/u/3728792/blog/3045892

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

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

相关文章

有哪些网站是django开发的_商城网站建设的具体开发流程有哪些

商城网站建设可以改变一家企业的营销模式,一些传统的行业在做着线下产品的销售,而有了商城之后就可以做网上销售,不过商城网站的开发比普通网站开发的难度更大,所以大家一定要认真的去了解那么商城网站建设的具体开发流程有哪些&a…

Java web speach api_HTML5 Web Speech API,让网站更有趣

Web API 变得越来越丰富,其中一个值得注意的是Web Speech API。传统的网站只能“说”,这个API的出现,让网站能“倾听”用户。这个功能已经开放了一系列的用法,非常棒。在这篇文章中,我们将看一下这项技术和建议的用法&…

seo模拟点击软件_SEO点击软件是否对网站排名有帮助

SEO点击软件是否对网站排名有帮助我们在搜索引擎搜索东西时候都是以某个关键词进行搜索,然后再更具该关键词的长尾词进行详细查找。在搜索时候我们会留意网站的展现数量,如某某网站展现量多,某某网站展现少,这些都会在我们潜意识里…

php页面怎么改造mip,代码适配的网站如何进行mip改造

最近一个小站需要进行mip改造,网站是代码适配的网站。就是电脑访问返回电脑端的页面,手机端访问返回手机端的页面。网站的url是相同的。改造后在百度提供的在线验证工具中进行了测试,全部通过测试。然后在站长后台进行了提交。提交后大概等了…

Python爬虫实战之爬取网站全部图片(二)

通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片 传送门:https://blog.csdn.net/qq_33958297/article/details/82316019 这篇文章的目的是因为上一个文章里的地址已经无法访问了 考虑到可能有的新手没有办法去实验&…

如何在微软Azure上搭建个人博客网站

手动配置服务器对很多读者来说可能并不是一件容易的事。好在在Azure中,微软已经就搭建WordPress个人博客给出了一站式的解决方案,对于零基础读者来说,在Azure上搭建WordPress即意味着你无需经历繁琐的服务器配置过程。本期的教程,…

CentOS7搭建DVWA网站

Lamp架构搭建DVWA 搭建Lamp请看:https://blog.csdn.net/qq_41709494/article/details/89430834 1.下载DVWA地址:http://www.dvwa.co.uk/ 2. 安装Lamp的所有包 [rootlocalhost ~]# yum install php php-mysql php-gd httpd mariadb mariadb-server -…

记一次网站优化---图片压缩与移动端画面缩放问题

一、背景 前段时间被人吐槽自己负责的官网访问慢 其实自己平时访问的时候是有意识到的,但是没有特别放在心上 在工作的列表中优先级排的不高 最近空闲了下来,使用性能分析工具审计了一遍网站的各项指标 发现了比较严重的问题 二、问题 1、页面内容空白时…

可以发外链的网站_外链是什么意思?发外链的技巧【经验分享.视频】

外链是什么意思?外链是指网站的外链,是指一个网站所拥有的站外推广链接。把自己的网址发布到别人的网站上,这样的链接叫做外链。(可发文章的平台,如58同城、赶集网、百姓网、等外链平台)比如我在百姓网发了…

插码统计点击次数_码迷SEO内参(15) 百度快排原理及百度第三代点击排名统计系统简析...

这是码迷SEO的第42篇原创今天讲百度第三代点击排名统计系统,顺带把百度快排深度原理也刨析一下。自从19年10月份以来,百度对快排打击丝毫没有手软的迹象,码迷发现凡是采集快排模式的网站至今无一幸免,70多天了也没有起色的现象。可…

php动态保存文件名_利用百度地图写个跑腿接单的网站菜鸟教程零基础php为主

忙了几天,终于闲下来了,接着上一篇写。上一篇说怎样在手机上搭建服务器,本篇写创建hello world,第一个页面。其实看过我上几篇教程的都知道大概怎样创建了,就是一页面法。一个主页面,其他页面用函数表示&am…

网站被挂了很多链接 源码里边看不到_网站优化的50个技巧

这次写的《网站优化50个技巧》是为了让那些没有时间深究SEO技术但又想一窥SEO真相的朋友们,希望看了这些你更懂SEO!这些经验和盘托出,希望能够帮助到朋友们!这些规则就像是交通指示灯一样,按照这些规则走的&#xff0c…

多线程导出excel_seo必备网站分析工具,关键词百度搜索结果查询导出源码

seo必备网站分析工具,关键词百度搜索结果查询导出源码两个简单的版本,关于百度搜索结果的采集抓取,可以获取到竞争对手的网站,加以分析和研究,只需输入关键词和搜索页码,即可完成对于竞争对手的获取和研究&…

html5网格布局建站,CSS网格布局的示例代码

本文介绍了CSS网格布局的示例代码,分享给大家,具体如下:浏览器兼容性可以看出CSS网格布局从Safari 10.1, Firefox 52, Chrome 60,Edge 15开始受到支持。网格布局页面基本元素:OneTwoThreeFourFive样式:.wra…

访问不了_浏览器访问不了网站??

话说,总有一些时候就是见鬼了,电脑死活上不去网~最神的操作是“重启”,十有八九会解决滴。but,如果遇到你的电脑QQ啥的还能上网,唯独浏览器(部分以前可以上的去的网站)不好使,那么你应该会百度,…

iis html asp,IIS 部署 ASP.NET 网站

1. 安装 IIS从控制面板中选择“程序和功能”,选择“打开或关闭 Windows 功能”:image_1ceiq3spb1v20r806r61huh2an9.png-156.3kB将 IIS 的选项全部勾选,需要展开子级目录一个一个点,最后的状态需要为勾选状态:image_1c…

禁止查看js文件_robot文件在网站中的重要作用

大家都知道搜索引擎通过蜘蛛爬行来搜索抓取信息,robot.txt文件就是和蜘蛛交流的文件,很多人都会说介绍要怎么让蜘蛛来爬行,却很少人知道可以用robot.txt去操控蜘蛛,robot.txt用得好的话蜘蛛可以为你所用。Robots.txt是网站管理员创…

ajax url 路径怎么写_怎样编写站内的SEO——URL

这期的分享我们接着说站内SEO中的URL。一、什么是URL?URL (Uniform Resource Locator), 通常称为“web地址”,也就是我们常说的“link,链接”,是用户可读的文本,旨在替换计算机与服务器通信时使用的数字(IP地址)。URL由…

简单的物流管理网站制作源码_清远专业制作搬运公司企业网站 | 980元做一个物流搬运公司企业网站...

企业网站设计开发过程中有很多的原则。一个好的网站,设计是非常重要的,如果设计的不能吸引用户,也满足不了用户的需求,那么这个网站之前所做的努力都白费了,我们就只知道不要犯一些基本的错误,那么这个网站…

华为抓取错误日志在哪里_网站日志数据分析教程

网站日志的数据分析主要是使用相关工具进行,工具类型也有很多。网页版可以用拉格好(www.loghao.com),桌面版可以用爱站或者光年,也可以使用shell分析日志。。。分析日志的作用有很多,可以概括几点:1.了解蜘蛛对页面的抓…