查看原文
其他

阿里云双11大宕机(文后有福利)

VAGE IT知识刺客 2023-11-18

1112号,往年这个时候,我们应该看到铺天盖地的双11数据。今年,双11有点静巧巧,换成铺天盖地阿里云事故。

我懒的去猜事故真正原因,而且,root cause的追索,并不是一件容易的事。真正的“起因”,有时也调查不出来,只是有一个看起来还行的“说法”而已。

故障,永远是复杂系统无法避免之痛。应对故障,冗余,是共识。但还有一点,不仅被忽略,大厂无一例外的还反其道而行之,那就是复杂度。

越复杂的系统出现故障的可能性越高,而且,出现故障后的修复时间越长。这是常识,但如今,很遗憾,却不是共识。

我们总想“既要、又要”,既要快速的性能,又要极高的高可用性。

既要稳定的系统,又要方便、快速的故障恢复时间,美其名曰:缩短RTO

……

怎么去实现各种各样的“既要 又要”呢,

简单啊,比如,本来一主一备,那就增加冗余度,一主多备。把“主“拆散,备放在各个地方,……

备太多了不好管理怎么办,切换的时候都不知道要用谁切谁?

上套管理系统啊,各种元数据都管起来,主的一部分功能挂了,自动切换备。管理系统起个名,盘古。高端吧,开天辟地。

管理系统挂了呢?没关系,管理系统也冗余起来,一主一备。

不行,一主一备的管理系统韧度不够,管理系统要拆散,每个部分要多备、备要放在不同机房、甚至地区。

管理系统太复杂了,怎么办。上套管理管理系统的系统。注意断句:管理“管理系统“的系统。就叫混沌吧,盘古前面的,大气磅礴的名字,也就混沌了。

混沌系统又是单点,……

系统就是这样变复杂的。

系统原来的代码量,可以万行到十万行左右,几年下来,轻松破百万。

考核程序员的重要指标,就是代码量。因此,代码量的扩展是必然的。系统复杂度的增长,也是必然的。

当系统的复杂度达到一定程度后,不可控事件的出现,就是必然的。

我说的玄乎了吗?看个实在点的例子。使用Perf 统计PostgreSQL执行一条简单SQL使用多个CPU指令,Perf命令如下:

有兴趣都可以试下。我在不同CPU下,统计select * from … where id=1这样的SQLID列是主键列)的指令数,大概在10万到15万条指令间。

某在业内以遥遥领先著称的大厂,以PG9为基础版本,开发了数年,推出了一款遥遥领先数据库。

此厂以狼性文化著称,给钱多、加班狠,996不是常态而是休息,常态是更狠的007

几年007下来,看最左边的统计结果:

注:同一台机器、相同数据量、相同表结构、相同SQL不同数据库的统计结果

不出意外的,这指令数量比PG多出快10倍了,真不愧是遥遥领先数据库。

MySQLOracle的比值就不分析了,此遥遥领先数据库毕竟是以PG为基础版本修改而来。

007不是闹着玩的,多10倍的指令数,说明这几年程序员真没闲着。增加了N多既要又要的功能,……

但是,我执行同样的SQL、检索同样的数据量,原生PG用了11万多条指令,你用了100多万条指令。

这就好像开车,开同样的距离,别人的油耗是11,你的油耗是100。这油耗,真是遥遥领先啊。

怎么办,简单啊。油耗太TM高,跑不过人家是吧,咱上分布式啊,中国人都知道,scalable架构+不一样的feature,才是新产品制胜之道。

这家大厂遥遥领先数据库的分布式scalable版本并没有开放出来,在既要又要思路下,加上007超高的执行力,代码量我相信在原基础上Double一下是没问题的,甚至再高个10倍我也相信。必竟,scalable也没那么容易实现的是吧。

回到系统复杂度的问题,代码量的过度增长,只是表象之一,是使用perf命令可以直观看到、感受到的。

系统总的复杂度,没故障时不太容易感受出来。但其实如同代码量一样,一步、一步,走向不可控。

一次和朋友聊到遥遥领先数据库时,我就说,如果他们能招个,996007的缩减代码规模,我就相信他们能成为国产数据库中成功者之一,否则,……

好了,到了文后福利阶段:

阿里云系统还是很好的,抗过了双11,到12号才崩,真不容易了。

而且,99块钱就能买一年阿里云主机,好像还能有49元的返现,那就是50块钱买台云主机啊。还能99块的价格,再续两年。

对我们个人用户,12号宕一会也没啥关系是吧。


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存