这个问题很有意思,虽然看上去想的挺简单,但是这确实是一个所有网站架构师都有可能面对的问题。所谓服务器崩溃有几种情况,一个是服务器宕机,就是服务器彻底没有响应了;另一个是服务器响应速度非常慢,基本上没有用了;我不是专业的架构师,单从我掌握的知识来分析,这个问题如果较真的话,产生的结果和以下几个因素有关:登录时产生的数据的传输量、传输服务器所在的网络带宽、服务器的架构和处理能力。
比如只验证用户名和密码,并且将用户登陆后的确认信息传回来,这个过程全部走完,大约需要1~5KB的数据。但是用户登录后往往还会根据用户的信息对网站上的页面内容进行刷新或者跳转,这个过程大约需要传输几百KB。所以1000万人同时登录同一个网站的话,大约需要在网络上传输几百个GB甚至上TB的流量。
根据上面的估算,如果这个网站是单台的服务器,那么很有可能一下子就挂了,因为几乎没有任何单台的服务器能够瞬间处理这么多登录的请求,因为瞬间请求的数据量太大了,CPU做任务调度根本响应不过来;
如果这个网站做成了分布式的服务运行在云平台上,那情况可能就大大不一样了:首先分布式系统内部是由很多个计算机组成的,整体的处理能力极强,在这种可能出现上千万用户同时访问情形的系统中,服务端甚至是由几处数据中心来组成的。这样子同时产生的登录请求被分开交给多个数据中心来响应,所需的数据带宽也由各个数据中心分担,这样一来,只要经过合理的计算和部署,完全就可以实现支持1千万用户同时登录的要求。
(淘宝的云平台服务示意图)
联系客服