B站蹦了,关我A站什么事?
昨天的大瓜,B站蹦了,大伙都跳起来分析了一波异常原因,着实给大伙的秋招准备了一波热乎乎的素材!在大家都在关注 B站的时候, 我大A站终于要站起来了!!!经过多方网友的极力引流,我A站也蹦了~
紧急通知: B站换域名了!!!
这里简单介绍一下 A 站发展史:
A站最初创立于2007年,是国内第一家弹幕视频网站,而且也曾经辉煌过,事实上A站在2011年之前一直都压制着B站,是当时国内最大的弹幕视频网站。
2009 - 2016 混乱的资本和人事斗争成为A站发展道路上最大的阻碍,也最终让A站逐渐走向衰落。
A站最初的“接盘侠”就是边锋网络,将“生放送”这块业务从A站独立了出来,成立了新的公司,也就是后来的斗鱼TV。
2018 被快手全资收购,苦苦经营。
A站蹦了
在广大网友的引流下,A站 迎来了一波大流量,成功把服务打挂了。但是和B站 崩溃不一样 ,大流量导致的雪崩,可以通过快速止血 , 恢复服务,
A站崩溃分析
贴了那么多的图,下面进行一波理性分析:
- 崩溃恢复大概在一个小时(23:15-00:25) 左右
- 崩溃时
页面显示正常 - 恢复后,部分能力
熔断
可以比较直观的感受,A站蹦了的原因,就是由于大流量打蹦了服务,导致服务异常。
可惜了兄弟们的一波引流
CDN 蹦了
CDN 上缓存的资源主要为: H5资源 和视频. 在一开始的 A站,展示页面是长这个样子的:
可以看到, H5 页面的静态资源加载没有问题, 资源还能够访问到,这时的 CDN 还是处于正常状态, 到后面的,整个页面都蹦了,这个时候 CDN 也被打挂了。
数据库蹦了
数据库蹦,是猜测的,大流量冲击下,新用户的登录,不同类型数据的访问,导致缓存命中率大大下降,请求直接打到数据库上。 这里就会出现雪崩的第一步: DB 处理超时
服务蹦了
上面提到了 数据库超时 ,引起的服务雪崩。 是其中的一种可能,如果服务的瓶颈并不是 DB ,而是逻辑处理,数据传输等,占用的是机器CPU,IO等资源,随着流量剧增,导致机器负载过高,无法快速响应业务,也是导致服务雪崩的原因之。
这里以 A站 的视频流传输为例,OSS 响应缓慢,或者说传输带宽受限,导致请求在视频服务堆积,最终导致整个链路雪崩。 当然,其他链路也会有类似的可能。主要指标可以参考,CPU,内存和IO 的负载,接口响应耗时。
A站服务恢复
恢复效果差强人意,可以直接明了的感受到部分能力被熔断了,保障基础能力的提供.
为什么我能那么快恢复?
跟 B站 的服务崩溃不同(物理攻击), A站 受到的影响主要是由于流量过大,导致机器负载过高,引起的雪崩。目前大部分服务,都已经上云了,好处就是,根据需求动态扩容(钱能解决的问题,都不是问题)。
1、动态扩容
通过监控可以很快定位到异常服务(负载过高),通过定向扩容,可以减轻单机负载压力,提升集群处理能力。以刚才提到的视频服务为例, 服务器负载过高了,加机器! OSS 带宽打满了, 充钱 ,阔大带宽!
2、限流
处理动态扩容,为了避免服务再次被打挂,很有必要加上限流,高可用三剑客之一,可以通过 网关限流,服务器限流,传输限速等多种渠道保障服务。像博主之前介绍到的 Sentinel 也提供,机器负载保护的能力,机器负载过高导致的雪崩。
3、熔断
服务熔断,是通过关闭部分能力,以保障整体链路的稳定性。下面图中,推荐系统能力可能暂时没回复,也可能是被熔断了。
整体架构可以理解为:
A站独家,五蕉必吃
好了各位,以上就是这篇文章的全部内容了,我后面会每周都更新几篇高质量的大厂面试和常用技术栈相关的文章。感谢大伙能看到这里,如果这个文章写得还不错, 求三连!!! 创作不易,感谢各位的支持和认可,我们下篇文章见!
我是 九灵 ,有需要交流的童鞋可以 加我wx,Jayce-K,关注公众号:Java 补习课,掌握第一手资料!
如果本篇博客有任何错误,请批评指教,不胜感激 !
B站蹦了,关我A站什么事?的更多相关文章
- PHP防止跨站表单提交与同站跨页伪造表单的攻击
在以前的防止跨站攻击的时候,使用了验证提交的页面是否是同一个站点,这样可以防止普通的攻击,ereg("blog.qita.in",$_SERVER['HTTP_REFERER']) ...
- 测试站如何最快获取正式站的最新数据: ln -s
针对静态数据, 比如图片/js等文件, 测试站如何获取最新的呢? ln -s /alidata/www/mysite/uploads /alidata/www/mysite_test/uploads ...
- 使用美橙主机建站(jsp+mysql+tomcat建站)
1.注冊美橙互联账号:http://www.cndns.com/ 2.选择橙云主机: 3.选择你须要的主机类型. 3.能够随时与客服进行沟通.购买完毕后登陆 管理中心 4.点击左边 主机类管理--&g ...
- C站投稿189网盘视频源(UP主篇)
C站投稿189网盘视频源(UP主篇) 现在C站(吐槽弹幕网)的视频来源基本靠的都是189网盘,比如番剧区的每个视频基本来源于此,不像AB两站,拥有自己的资源服务器,为啥呢?没钱啊.都是外来的视频.本站 ...
- [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】
[课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...
- 洛谷P1901 发射站
题目描述 某地有 N 个能量发射站排成一行,每个发射站 i 都有不相同的高度 Hi,并能向两边(当 然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比 它高的发射站接 ...
- 用PHPcms V9四步完成WAP手机站搭建
用PHPCMS最新发布的V9搭建了ONOW中文网,WEB网站(www.onow.cn)完成后,有用户提供手机访问的问题, 于是着手搭建ONOW手机WAP站(3g.onow.cn). 用PHPCMS V ...
- 完善dedecms站内搜索代码,为搜索结果添加第*页
自那些平凡而伟大的程序猿开发了内容管理系统(cms),为了让看客们更快地找到自己感兴趣的内容,他们不断完善站内搜索代码,形成了一个小型的站内搜索引擎.可能有些网站模板设计师没考虑到seo的问题,很多站 ...
- 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)
http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...
随机推荐
- 【C++】禁用/启用笔记本键盘工具(含源码)
目录 前言 简单介绍注册表 (1)根键 (2)子键 (3)键值项 操作注册表的几个API函数 (1)打开一个键 (2)查询某一个键值 (3)设置一个键值 (4)新建指定键 (5)删除注册表指定键下的值 ...
- 写Bug时,需要注意的几点 02
重构2-重新组织函数 重构的基本技巧--小步前进,频繁测试. 模式是你希望到达的目标,重构则是到达之路. 在单进程软件中,你永远不必操心多么频繁地调用某个函数,因为函数的调用成本很低.但在分布式软件中 ...
- Jmeter- 笔记5 - 从响应数据提取信息
JSON提取器 提取 响应体(response body)里的信息 在需要提取数据的请求下添加 JSON提取器,一个JSON提取器可以写多个json提取器 路径:后置处理器 -> JSON提取器 ...
- Angel图算法
Angel图算法 [2.0]CommonFriends 计算两个好友的共同好友数,某种程度上可以刻画两个节点之间的紧密程度. 输入 输入数据路径:输入文件所在路径,无权网络数据, 数据格式为两列 sr ...
- pytorch空间变换网络
pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 阅读更多有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化 ...
- TensorFlow编程结构
TensorFlow编程结构 TensorFlow 与其他编程语言非常不同. 首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行.起初这对于传统程序员来说看起来很 ...
- 视频处理单元Video Processing Unit
视频处理单元Video Processing Unit VPU处理全局视频处理,它包括时钟门.块复位线和电源域的管理. 缺少什么: •完全重置整个视频处理硬件块 •VPU时钟的缩放和设置 •总线时钟门 ...
- node和gulp版本的坑
现在node版本最新的稳定版在14+ 然后我在接手项目的时候使用gulp打包,怎么也打包不了,这个问题纠结了挺久,然后百度了下,发现版本的问题 node 12+ 以上的版本不兼容 gulp 3的版本 ...
- 解决:ImportError: DLL load failed while importing _sqlite3: 找不到指定的模块。
Django框架学习第一步,创建一个Django工程. 本次采用的是创建虚拟环境来创建Django工程.本地解释器采用anaconda ,内置Python3.8 在pycharm中报错: 内容如下:I ...
- python_selenium 之yaml文件读取(以读取元素信息为例)
一.yaml源文件编写 二.对yaml文件内容的读取 #coding=gbkimport osimport yamlcurrent_path=os.path.dirname(__file__)yaml ...