昨晚,小编的朋友圈被一首歌刷屏了
9月16日23点,周杰伦新歌《说好不哭》正式发售,已经上架QQ音乐,需要付费3元购买。但不少网友反映“QQ音乐崩了”,打不开该歌曲页面,可能是短时间内大批歌迷涌入,服务器出现了拥挤。
一直以来,在大家眼里,只有微博服务器是“不堪一击”的,明星结个婚,宣布个恋情,微博都会崩。但前天晚上,击溃音乐平台服务器的男人出现了。
周杰伦的歌,可以说是陪着我们80、90年代的人长大。虽然周董许久没出新歌,但歌迷的热情不减,晚上11点上线还是有很多人卡点购买歌曲,歌迷大批涌入,QQ音乐的服务器崩了。
歌迷有没有被感动哭我不知道,但是QQ音乐的程序员估计是要哭了,真是击溃QQ音乐服务器的第一人,估计QQ的程序猿们也没想到吧,不然也不会有网友到早上都没还买不了新歌。
为什么访问量突然暴增会导致系统崩溃呢?有什么方法可以解决这个问题呢?
原来这是“高并发”的问题,重点来了哦,下面进行我们的教学部分~
什么是高并发?
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
简单来说就是,能够高效的处理短时间内大量用户同时访问系统的问题,像双十一、微博热点等等事件,都能引发巨大量的用户同时访问,高并发没做好,就会使服务器瘫痪。
“高并发”关键词
响应时间(Response Time)
是指用户发出请求或者指令到系统做出反应(响应)的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
吞吐量(Throughput)
是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。即:单位时间内处理的请求数量。
每秒查询率 QPS(Query Per Second)
是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。即:每秒响应请求数。
并发用户数
更够同时承载并能正常使用系统功能的在线用户数量。
如何有效解决?
当开发人员打算提升系统负荷能力的时候,互联网分布式架构设计,就能够有效提高系统并发能力,主要有两种方法:垂直扩展(Scale Up)与水平扩展(Scale Out)。
垂直扩展
在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即提升单机处理能力。它分为以下两种方式:
增强单机硬件性能,例如:增加CPU核数,升级更好的网卡,更好的硬盘,扩充硬盘容量,扩充系统内存等等。
提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
但是论是提升单机硬件性能,还是提升单机架构性能,它们都存在着一个致命的缺点:单机性能总是有极限的。
水平扩展
只要增加服务器数量,就能线性扩充系统性能。各个层次实施水平扩展后,就能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限啦。
所以互联网分布式架构设计高并发最优解决方案,就是水平扩展。
领取专属 10元无门槛券
私享最新 技术干货