高并发后如何缩短响应时间(高并发比低并发响应时间快)

网站响应时间是指系统对请求作出响应的时间。通俗来讲,就是我们把网址输入进浏览器然后敲回车键开始一直到浏览器把网站的内容呈现给用户的这段时间。网站响应时间越短越好,因为网站页面打开速度越快,就意味着我们的用户可以更快地访问站点或者我们的服务器。一般网站的响应时间保持在100~1000ms即可,1s=1000ms,打开速度越快对用户体验度越好。

解决方案

当用户请求一个网站数据的时候,实际上是发送了一个HTTP请求,在宏观上可以分为两个部分:

HTTP请求到达目标网站服务器之前;

HTTP请求到达目标网站服务器之后。

如果忽略其中硬件部分和部分细节,请求一个网站数据的大体过程如下图所示(其中CDN和缓存部分可以省略):

我们要想缩短一个网站的响应时间,本质上是提高数据的返回速度,说的直白一点就是要把请求数据过程中的各个步骤提高速度,这样整体下来响应时间就会缩短。

把数据放在离用户越近的地方响应时间越快。

客户端

客户端是发起一个网站请求的源头,其实这个源头可以施加一定的策略来大大缩短某些数据的获取时间。其中最为常用的就是缓存,一些常用的、很少变动的资源缓存在客户端,不但能缩短获取资源的时间,而且在很大程度上能减轻服务端的压力。比如一些图片、CSS、JS文件,甚至一些接口的数据或者整个网页内容都可以在客户端做缓存。另外HTTP请求的合并也可以减少对服务端的请求次数,在一定程度上可以缩短请求的响应时间。

DNS

一般网站的访问方式都采用域名的方式(很少见IP方式),既然是域名就涉及到DNS解析速度的问题,如果DNS服务解析的速度比较慢,整体过程的响应时间也会加长,不过这个过程其实很少出现慢的问题(不是说没有)。

网络

客户端获取到网站IP之后通过网卡把HTTP请求发送出去,目标地址为相应的网站服务器。在这个过程当中如果客户端和服务器端有一方带宽比较小的话,就会加大响应时间。我司曾经就因为服务器带宽过小导致客户端响应时间很长的情况,当时排查了很长时间才发现。

当然网络是不可靠的,这个过程的响应时间其实取决于很多因素,比如路由器的路由策略是否最优,整个过程通过的网关数据量等。所以有很多网站其实是多地区多机房部署的,目的就是为了让用户通过很短的网络路径就能到达网站(其实这个过程运营商的选择也有影响)。

网站

当一个请求到达网站服务器,服务器便开始处理请求,一般会有专门处理业务请求的一个业务层,有的体现为RPC协议的微服务,有的体现为简单的一个代码分层。最终请求的数据会通过查询数据库来返回。

其实这个过程和车站购票流程一样,每个窗口的处理能力是有限的,对应到服务器处理能力。由于这个原因,所以诞生了负载均衡的策略,核心思想就是:分。一台服务器不够,那就两台、三台、四台….. 直到并发的所有请求的响应时间都在可控范围之内。

数据库的情况类似,一个数据库扛不住压力,就加到N个数据库分散压力。一个表扛不住压力,就把这个表拆分开,拆分成多个表,甚至拆分到多个不同服务器数据库,这就是我们常用的拆表策略。有的时候在同一个数据库中进行表拆分,性能的提升并非最大化,因为一台服务器的磁盘IO是有上限的,就算拆成100个表,还是在同一个物理磁盘上,当然这样可缓解锁单表的情况。

现在有很多的场景采用NoSQL代替关系型数据库来缩短响应时间,在正常情况下,由于关系型数据库的本身因素在特定场景下的读写速度比NoSQL要慢很多,所以系统设计初期,可以考虑采用关系型数据库和NoSQL混用的方案。

缓存

当并发的请求到达一定程度,瓶颈大部分情况下发生在DB层面,甚至DB无论怎么优化总有上限。为了避免频繁查询数据库产生瓶颈,诞生了缓存。在访问数据库之前加入了缓存层,当然这里的缓存采用的方案在数据的响应时间上要比数据库小很多,比如常用的Redis、Memcache,但是这些第三方的缓存组件还是要走网络,比起进程内的缓存还是要慢的多。

现在一般流行的设计在网站层和服务层都有缓存策略,只不过缓存的数据和策略有所不同,但是最终目的都是为了加快请求的响应。当然加了缓存之后,数据的一致性需要仔细设计才可以,如果发生数据不一致的情况,程序员可能要背锅了。

缓解数据库压力并不是引入缓存的唯一因素。

CDN加速

一些小厂可能用不到CDN,但是CDN带来的加速还是很客观的。CDN依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023-02-28 16:14
下一篇 2023-03-01 09:52

相关推荐

  • 自动化工程师必备知识,软件自动化测试工程师

    本文中所列软件,都是根据自己工作经验归纳而来,均亲测可用。 1.文档编辑软件:Office、WPS。如工作组有多人,建议统一使用同款软件,常见问题是用A软件编辑的文档,在B软件查看…

    数码科技 2023-03-27
  • iphone6s如何从ios11降级到ios10

    很遗憾的告诉你,苹果手机升级后如果官方没有开通降级通道是无法降级的。没法从IOS11降回IOS10。6s的配置虽已脱离主流,但还不算落后,毕竟配置的是1.8G双核A9+M9处理器组…

    2023-01-07
  • 如何解决 iphone 应用频繁闪退的问题

    在 iPhone 上遇到某个应用闪退,可能是 Bug 或应用与 iOS 系统不兼容发生冲突导致,一般可以尝试通过以下办法解决: 1.如果应用卡死,可以在 iPhone 后台强制关闭…

    2023-01-04
  • 笔记本无法重装系统怎么办,笔记本重装系统教程完整版

      1.启动计算机,并按住DEL键不放,直到出现BIOS设置窗口(通常为蓝色背景,黄色英文字)。   2.选择并进入第二项,“BIOS SETUP”(BIOS设置)。在里面找到包含…

    2023-05-01
  • 开花店的渠道都有哪些

    你 · 的 花艺师养成记 必备工具 开花店那些事儿 网络采购 在电子商务飞速发达的今天,对于花店经营者来说,除了线下采购,还可以在网上采购鲜花、花盆、花肥及各种辅助用品。 1 网络…

    2023-02-11
  • 输入法皮肤制作,输入法皮肤制作赚钱

    百度输入法可以超级皮肤功能可以调整键盘布局。其实也可以利用此功能制作特别的键盘。比如笔者制作的希腊字母键盘,临时输入公式用;注音符号键盘和拼音键盘,临时输入注音符号和带调拼音。 希…

    2023-08-30
  • 苹果手机什么验证真假呢

    苹果手机以其独具特色的操作系统以及广受赞誉的外型设计,成为了手机界无法抹掉的一个品牌。正是由于这样的优秀,使得很多不法商家山寨苹果的各种机型,从而给消费者带来了精神和财产上的损失。…

    2023-03-19
  • 老年手机u盘,106g手机u盘

    老年人学手机(031)手机U盘 上一讲,我们讲到【文件管理】的清除功能,清除手机产生的垃圾、图片、视频、音频、安装包、压缩包。这里再提醒一下,在你清除之前,一定要把有用的都拷贝出去…

    数码科技 2024-01-14
  • 如何共享mysql数据库,mysql数据库查询语句共享

    共享数据库,你说的是多个人同时使用一个数据库吧,说的清楚一点就是,在一个数据库上,给不同的人授予不同的权限,大家共同来使用这个数据库。这个实现起来挺简单的,下面以我本地的mysql…

    2023-04-01
  • 安卓手机怎么刷系统,安卓手机能刷的游戏系统

    1、是的。手机刷机是指安装新的系统,就像电脑重装系统一样,可以刷各种适合手机的系统。清理手机里面的资料,例如APP,通讯录,短信,通话记录(刷机前做好备份即可)。 2、刷机的目的主…

    数码科技 2023-04-05