服务器异地多活是什么?业务高可用架构关键方案

阿木 发布于 16 小时前 3 次阅读


半夜三点,被值班电话吵醒。

机房监控屏上,一条红线刺眼地横着。

那感觉,就像你在海里游得正欢,一回头,岸没了。

不是慢慢没的,是瞬间,塌了。

这不是段子,这是每一个靠代码吃饭的人,最深的噩梦。

如此一来,我们谈论“异地多活”,谈论那份PDF文档中海冰冷的架构图,实际上意思是在谈论——怎样给这个犹如噩梦一般的状况,预先购置一份保险。

别扯那些虚的,你就告诉我,钱花哪了?

谁不知道数据要备份?

谁不知道要搞两个机房?

问题是,多活,不是备份。

备份是你在A点睡觉,B点放了个替身娃娃。

倘若你出现离世情况,那替身娃娃要先进行化妆,之后再登上场,而在这两者之间所间隔的那段时间,用户早就开始大骂不止了。

多活是什么?

是你和你的替身同时醒着,同时蹦迪。

A点出现坍塌状况,处于B点位置的灯光师,连一秒钟都没有丝毫迟疑,立刻进行打光操作,使得舞台始终保持着明亮状态。

银行这么干,双十一的电商这么干。

因为他们赔不起那一秒的沉默。

那个叫“一致性”的魔鬼藏在哪?

都以为最难的是技术。

写代码嘛。

错了,最难的是数据这头犟驴。

你在北京买了一包辣条,购物车显示空了。

结果,你进行了一次刷新的操作,流量就此切换到了上海的机房,购物车进而向你传达这样的信息:那包辣条仍然处于存在的状态,请你执行付款的行为。

这不叫多活,这叫精分。

为了实现“看起来只有一个数据库”,那帮聪明人想破了头。

哪种同步复制,哪种异步复制,哪种半同步复制,恰似极象谈恋爱之际的三种状态:始终时刻报备,有空才想起来再说,全凭随缘。

高德地图存你7000亿条足迹,怎么搞的?

上海、张北、深圳这三个地点,他们借助OceanBase实现了同时处于存活状态。

你感觉不到切流量,因为他们把数据同步玩成了艺术。

但艺术,往往是钱烧出来的。

### 网络抖一下,心脏停一拍

还有个看不见的敌人,叫光速。

北京到上海,光纤直连,理论上延迟多少?

几十毫秒。

就这几十毫秒,够一个分布式事务死给你看。

你以为的“同时写入”,在物理世界里就是先后顺序。

如同Uber那般规模的公司,每日要处理五百万起Hive事件,还要进行跨区域复制重达8PB的数据。

那个人弄了个称作HiveSync的系统,如同患有强迫症似的,每隔四个小时就去查看一回数据是否出现了“魂穿”错位的情况。

存在这样的情况需要解决:上海所呈现出的数据表述自己已然完成,北京所呈现出的数据也表述自己已然完成,然而实际上二者所指的并非是同一桩事情呢。

别瞎起哄,这玩意真不是谁都配得上

看过太多创业公司,融资了几个亿,嗷嗷叫着要上异地多活。

为啥?

老板觉得有面子。

但你一个日活几万的小破站,至于吗?

真至于吗?

中金公司开展“两地三中心”举措,是源于一次交易失败,所赔付的资金数额足以购置一个机房。

腾讯云有着同城双活方案,其将RPO(也就是数据丢失量)做到了5秒以内,这是由于客户缴纳的保护费达到了相应标准。

你那个博客挂了,用户会等你泡杯茶再刷新。

别凑热闹。

所谓多活,其实是认怂

折腾到最后,你会发现,搞异地多活,不是为了战胜灾难。

是承认自己搞不定老天爷。

承认光纤会断,电会停,人会手滑。

承认哪怕你把代码写得像诗一样优美,一把火也能烧干净。

所以,我们只是分散地站着,各自举着火把。

告诉那个半夜三点下单的傻子:别怕,我看得见你。

数据还在,服务就在。

哪怕一座城市暗了,另一座城市的灯,还为你亮着。

这大概就是技术里,最像浪漫的那一点点东西。