马超责编
郑丽媛出品
CSDN(ID:CSDNnews)
昨天晚上笔者刷B站时突然发生登陆不上的情况,用流量还是WIFI都不行,当时我第一反应是手机的问题,但重装APP重启机器都没能解决,后来刷知乎才知道昨晚B站、A站、豆瓣甚至连同微博都有过中断的情况。凌晨1点左右B站基本恢复了正常,今早我们看到B站就昨天晚上的崩溃致歉,并说明事故原因是不同服务器机房出现故障所致。
从事故经过中可以看到像B站、A站这种用户上亿的视频网站,即使是在凌晨的访问中断都会造成极大影响。因此笔者作为一名多年战斗IT一线的老兵一下子就来了精神,连夜写下本文来,以B站本次事件为切入点,谈谈如果在网站崩溃当天值班该怎么办?
知识储备:一个用户请求的神奇之旅
首先,无论你是访问B站还是其它APP,第一步都要先访问DNS服务器,进行域名解析。一般来说DNS服务器会根据用户所在的网络情况,把到用户访问延时最低的服务IP返回给用户,在用户通过DNS服务器解析得到B站的IP地址之后,再将实际请求发向该IP。
接下来就会来到CDN节点。一般像B站这种体量的网站,在流量进入到自身体系之前,都会进行CDN加速。这里先对CDN稍等科普:一般来说网站上的内容分为静态和动态两种,其中静态内容对所有客户都一样,比如首页最顶端的动图,而动态内容一般需要根据不同用户而针对性计算处理,比如为你推荐,猜你喜欢的内容,如下图所示:
可以看到静态内容的变动周期较长,对所有人都呈现相同的内容,其特别之处在于需要大流量支撑,但却不怎么需要算力支撑;动态内容则是对用户个性化的内容投放,流量不大,但却需要很强的算力支撑。而CDN节点就是由公有云厂商专门针对静态内容展现提供的加速服务,通过CDN加速节点,B站可以先把静态内容先缓存到引用公有云的CDN节点上,以此把很大一部分流量压力隔离到网站自身的信息系统体系之外。
在走完上述的流程之后,用户请求才会最终走入B站的系统体系内部,一般来说先过负载,再进入微服务的调用链。之前B站的技术总监毛剑老师曾对于B站的高可用方案做过介绍,具体可以参考: