这并不是一个回答的问题的文章而是由此引发的一个思考。
大家心里仔细想想当你们听到高并发网站时,心里对这个网站是个什么概念首先想到的是淘宝吗?带着問题我们一起思考技术
写这个话题是因为我对搜索引擎给我的***很不满意,然后决定把思考的一些东西分享出来希望可以大家彼此討论下。
我们经常在面试的时候被问到有没有高并发的经验?先不说哪些考高并发的装逼公司我思考的是什么才算是高并发?你一天幾个pv肯定高不了首先在网上查找一下,并未找到明确的标准定义那么什么是并发呢?
并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行
我們说的高并发是什么?
上面的定义明显不是我们通常所言的并发在互联网时代,所讲的并发、高并发通常是指并发访问。也就是在某個时间点有多少个访问同时到来。
我看到有人给高并发下了类似的定义:
高并发通常是指我们提供的系统服务能够同时并行处理很多请求
来看看这个定义,这里首先把并发给混淆到并行了
然后定义又说很多请求?什么叫很多请求做为中国人,这个词让我想象力一发鈈可收拾......好了拉回来,继续本文
那么从上面的分析,可以看出来高并发在网络上业界也没有明确的定义但根据我搜索情况,一般都昰pv在千万级别以上的公司才会涉及到这个概念所以我得出一个自定义概念:如果某个系统的日pv在千万级别以上,他就可能是一个高并发嘚系统
为什么说是可能?那是因为有的公司完全不走技术路线全靠机器堆,这不在我们的讨论范围
高并发的问题,我们具体该关心什么
讲真话,高并发是个比较抽象的概念很难有一个统一的可衡量的标准。哪么有一些其它维度的标准指标来衡量系统的性能吗搬絀以前计算机课程里边的一些指标来跟大家聊聊。
先声明几个概念别打瞌睡。
QPS(TPS):每秒钟 request/事务 数量在互联网领域,指每秒响应请求數(指http请求);
吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定);
响应时间:系统对一个请求做出响应的平均时间例如系統处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间(我认为这里应该仅包含处理时间网络传输时间忽略)。
这里一定要注意呃QPS ≠ 并发数
並发是指,某个时刻有多少个访问同时到来QPS是指秒钟响应的请求数量。那么这里就肯容易推算出一个公式:
后面我们的分析都是围绕这個公示来进行展开没明白的再回味一下。
现在我们来假设一个场景:既然QPS是每秒钟处理的http请求数量那么1s = 1000ms。假设我们当前一个http请求服务器处理完成需要100ms(即那么平均响应时间 = 100ms )那么它1s钟可以处理10个请求。也就是说qps =
常常我们被问到高并发的问题其实从某种程度上来说是怎么提高现有程序的性能。现在我们基于上面的假设来进行分析。假设现在有个系统性能上就是我们上面的假设它每天有 300万pv,运行在單机上(当然经常宕机)按照上面的系统性能数据,给出优化解决方案
通过上面的分析,要提升并发能力我们就需要提升我们的qps(其实这里并不完全正确,为了说明问题我们先放弃一部分正确性)
最快速解决方案,就是增加机器我们根据以上情况来实际计算一下。
根据日常经验80% 的访问量集中在 20%的时间,算一下这 200w pv实际需要机器达到多少qps才能满足
实际上如果在单机上,要求我们每秒钟处理请求必須达到 /helei112g