14日凌晨,B站发布消息称:
昨晚,B站的部分服务器机房发生故障,造成无法访问。技术团队随即进行了问题排查和修复,现在服务已经陆续恢复正常。耽误大家看视频了,对不起!
已知:
- Bilibili,Acfun,豆瓣都出现崩溃404.
- 豆瓣和Acfun很快恢复,Bilibili大约用了一个小时让用户能够正常访问。
- Bilibili直播是可以正常观看的,朋友看吃鸡直播没有受到影响。
- B站高可用用架构实践 - 云+社区 - 腾讯云 (tencent.com)
- 根据上面文章可知,Bilibili的LB(负载均衡器)是自研的,一系列为了高可用配套的服务和中间件都是自研的。
- 在逐渐可以访问主站时,推荐系统并没有推荐正常的视频给用户。
看知乎余歌[1]分析说:
a. Bilibili、Acfun、豆瓣等的云服务供应商出现了问题。但是不清楚CDN出现问题还是挂载着容器的机器出问题
假设是容器出现问题,一个工作正常的LB会访问其他可用的容器。在这种情况下很难出现昨天的问题,毕竟Bilibili这么大一公司也不会把鸡蛋放在一个篮子里,肯定是异地多机房容灾。而且Bilibili这种大型视频网站,读请求和读流量肯定大部分走的都是CDN和缓存,发生这种情况的概率要小很多,另一种情况的概率很大。
那么另一种可能是CDN出现了问题,假设CDN出现了问题,大量读请求发送到CDN,由于供应商出现意外,请求无法在CDN上找到资源,大量请求回源到Bilibili主站。这是一个比较合理的情况。
进行了一个猜测。7 / 14 Bilibili出现问题的整体流程可能如下:
1. 云服务供应商出现意外,大量请求绕过CDN直接打到应用网关,多家互联网公司的主站发生无法访问的现象。
2.1 豆瓣,Acfun等公司的运维收到告警,紧急切换了CDN,或启动了容灾策略进行降流,系统正常对外提供服务。
2.2 Bilibili同样收到告警,启动了容灾策略,但是当时正是Bilibili流量高峰期,有两个可能:
2.2.1 自研的LB没办法处理这么多请求,直接崩了
但是如果LB崩了,只需要切换C