读者群的朋友大家都比较关注高并发,原因很简单,想去BAT这样的大公司,你必须要有高并发的经验。
今天普及下高并发的知识,希望大家对高并发有一个正确的认识。
什么是高并发
高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击。
专业的角度什么是高并发
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用的一些名词,高并发用户数,响应时间(Response Time),吞吐量(Throughput),TPS(Transactions Per Second)每秒事务数,QPS(Query Per Second)每秒查询率等。
响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
并发用户数:指的是现实系统中操作业务的用户,例如在淘宝双11疯狂抢单,同时在线量一定程度上代表了系统的并发用户数。
在性能测试工具中,一般称为虚拟用户数(Virutal User),注意并发用户数跟注册用户数、在线用户数有很大差别的,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器 不产生压力,注册用户数一般指的是数据库中存在的用户数。
吞吐量:单位时间内处理的请求数量。
TPS:是Transactions Per Second的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。
在做性能压力测试的时候,最重要的一个数据就是TPS,TPS可以通过PV进行换算,PV->TPS转换模型,具体换算发请参考淘宝性能测试白皮书里面就有非常详细的描述。
高并发解决方案
1、服务器架构
业务从发展的初期到逐渐成熟,服务器架构也是从相对单一到集群,再到分布式服务。
一个可以支持高并发的服务少不了好的服务器架构,需要有均衡负载,数据库需要主从集群,NoSQL缓存需要主从集群,静态文件需要上传CDN,这些都是能让业务程序流畅运行的强大后盾。
服务器这块多是需要运维人员来配合搭建,具体我就不多说了,点到为止。
大致需要用到的服务器架构如下:
服务器
均衡负载(如:nginx,阿里云SLB)
资源监控
分布式
数据库
主从分离,集群
DBA 表优化,索引优化等
分布式
NoSQL
Redis
主从分离,集群
MongoDB
主从分离,集群
memcache
主从分离,集群
消息队列
秒杀、秒抢等活动业务,用户在瞬间涌入产生高并发请求,主要解决异步消息
CDN
以下静态资源需要转移到CDN基站
html
css
js
image
等等..
高并发学习经验
要想获得高并发学习经验,无非就两条:学习和实践。
学习,首先要正确了解高并发的知识点,比如上面我提到的这些内容。
其次,如果没有机会实践,完全可以自己模拟这样的业务场景,利用并发测试工具。
测试高并发可以使用第三方服务器或者自己测试服务器,利用测试工具进行并发请求测试,分析测试数据得到可以支撑并发数量的评估,这个可以作为一个预警参考,俗话说知己自彼百战不殆。
第三方服务:
阿里云性能测试
并发测试工具:
Apache JMeter
LoadRunner性能负载测试等。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》