定义:
高并发(High Concurrency)是使用技术手段使系统可以并行处理很多请求。
关键指标:
-响应时间(Response Time)
-吞吐量(Throughput)
-每秒查询率QPS(Query Per Second)
-每秒事务处理量TPS(Transaction Per Second)
-同时在线用户数量
关键指标的维度:
-平均,如:小时平均、日平均、月平均
-Top百分数TP(Top Percentile),如:TP50、TP90、TP99、TP4个9
-最大值
-趋势
「并发」由于在互联网架构中,已经从机器维度上升到了系统架构层面,所以和「并行」已经没有清晰的界限。「并」(同时)是其中的关键。由于「同时」会引发多久才叫同时的问题,将时间扩大,又根据不同业务关注点不同,引申出了引申指标。
引申指标:
-活跃用户数,如:日活DAU(Daily Active User)、月活MAU(Monthly Active Users)
-点击量PV(Page View)
-访问某站点的用户数UV(Unique Visitor)
-独立IP数IP(Internet Protocol)
-日单量
二、多大算高并发
这个问题的答案不是一个数字。来看两个场景:
场景1:
木头同学去一家创业公司面试。这个公司做的产品还没有上线,面试官小熊之前就职过公司的产品都没有什么量。
小熊:“有高并发经验吗?”
木头:“我们服务单机QPS2000+,线上有4台机器负载均衡。”
这时候小熊心里的表情大概是:
但是如果小熊就职的公司是美团之类的。那这这时候小熊心里的表情大概是:
场景2:
固态硬盘SSD(Solid State Disk)说:我读取和写入高达 1000MB/秒
mysql说:我单机TPS10000+
nginx说:我单机QPS10W+
静儿说:给我一台56核200G高配物理机,我可以创建一个单机QPS1000W
不在同一维度,没有任何前提,无法比较谁更牛。“我的系统算不算高并发?”这个问题就如同一个女孩子爱问的问题:“我美不美?”
三、高并发的本质
俗话说:「没有对比就没有伤害」。算不算高并发,这个问题的答案需要加对比和前提。
对比包括:
-业界:在业界同类产品中并发量处于什么位置。举个栗子?,美团外卖的日单量是千万级别,一个系统日单量在百万,虽然差一个数量级,但是相比大多数公司已经很不错。
-自身:在自身系统中,并发问题是否已经是系统的瓶颈?如果是,这么这个瓶颈怎么打破?如果不是,那当初架构设计的时候是怎么保证并发不是问题的?(别告诉我:是通过系统没有访问量来保证的[擦汗])。
前提包括:
-业务复杂度:举个栗子?,访问百度首页的时间基本就是看自己家的网速,通常情况下都是点一下就看到结果了。而扫描二维码支付,通常需要等很久,虽然这可能已经是业界最牛的支付公司出品了。
-配置:用高配物理机得出的数据和最老最低配的虚拟器上的出来的结果是无法比较的。通常的配置有:cpu、内存、磁盘、带宽、网卡
高并发的本质不是「多大算高并发」的一个数字,而是从架构上、设计上、编码上怎么来保证或者解决由并发引起的问题。当别人问你:“做过高并发吗?”回答者完全可以描述自己系统的各项指标,然后开始叙述自己对系统中对预防、解决并发问题作出的思考和行动。
四、总结
过程大于结果,方向大于方法。
相关阅读:
程序常用的设计技巧
美团分布式服务通信框架及服务治理系统OCTO
学会用数据说话-分布式锁究竟可以多少并发?
大话高可用
《怎样在工作环境中提高自己的影响力?》
《演讲稿:新人培养之道》
《自动化管理之新人培养》
《代码整洁之道--边界》
《「苦练基本功」超级大佬推荐工程师必看的书感悟》
关于作者
一线开发十二年,有日本东京和美国硅谷研发经验。有百余项技术发明专利,目前任美团点评技术专家。
技术公众号「编程一生」,公众号头像即为作者本人。