什么是并发:
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
什么是高并发:
高并发(High Concurrency)是使用技术手段使系统可以并行处理很多请求。
高并发指标:
- 响应时间 (Response Time)
- 吞吐量 (Throughput)
- 每秒查询率 QPS(Query Per Second)
- 每秒事务处理量 TPS(Transaction Per Second)
- 同时用户在线数量
关键指标的维度:
- 平均 小时平均、日平均、月平均
- 百分数 TP50、TP90、TP99、TP4个9
- 最大值
- 趋势
「并发」由于在互联网架构中,已经从机器维度上升到了系统架构层面,所以和「并行」已经没有清晰的界限。「并」(同时)是其中的关键。由于「同时」会引发多久才叫同时的问题,将时间扩大,又根据不同业务关注点不同,引申出了引申指标。
引申指标:
- 活跃用户数
- 点击量
- 访问某站点的用户数UV
- 独立IP数
- 日单量
多大才算高并发
算不算高并发,这个问题的答案需要加对比和前提。
对比包括:
-业界:在业界同类产品中并发量处于什么位置。比如,美团外卖的日单量是千万级别,一个系统日单量在百万,虽然差一个数量级,但是相比大多数公司已经很不错。
-自身:在自身系统中,并发问题是否已经是系统的瓶颈?如果是,这么这个瓶颈怎么打破?如果不是,那当初架构设计的时候是怎么保证并发不是问题的?(别告诉我:是通过系统没有访问量来保证的[擦汗])。
前提包括:
-业务复杂度:比如,访问百度首页的时间基本就是看自己家的网速,通常情况下都是点一下就看到结果了。而扫描二维码支付,通常需要等很久,虽然这可能已经是业界最牛的支付公司出品了。
-配置:用高配物理机得出的数据和最老最低配的虚拟器上的出来的结果是无法比较的。通常的配置有:cpu、内存、磁盘、带宽、网卡
高并发的本质不是「多大算高并发」的一个数字,而是从架构上、设计上、编码上怎么来保证或者解决由并发引起的问题。当别人问你:“做过高并发吗?”回答者完全可以描述自己系统的各项指标,然后开始叙述自己对系统中对预防、解决并发问题作出的思考和行动。