半夜三点,被值班电话吵醒。
机房监控屏上,一条红线刺眼地横着。
那感觉,就像你在海里游得正欢,一回头,岸没了。
不是慢慢没的,是瞬间,塌了。
这不是段子,这是每一个靠代码吃饭的人,最深的噩梦。
如此一来,我们谈论“异地多活”,谈论那份PDF文档中海冰冷的架构图,实际上意思是在谈论——怎样给这个犹如噩梦一般的状况,预先购置一份保险。
别扯那些虚的,你就告诉我,钱花哪了?
谁不知道数据要备份?
谁不知道要搞两个机房?
问题是,多活,不是备份。
备份是你在A点睡觉,B点放了个替身娃娃。
倘若你出现离世情况,那替身娃娃要先进行化妆,之后再登上场,而在这两者之间所间隔的那段时间,用户早就开始大骂不止了。
多活是什么?
是你和你的替身同时醒着,同时蹦迪。
A点出现坍塌状况,处于B点位置的灯光师,连一秒钟都没有丝毫迟疑,立刻进行打光操作,使得舞台始终保持着明亮状态。
银行这么干,双十一的电商这么干。
因为他们赔不起那一秒的沉默。
那个叫“一致性”的魔鬼藏在哪?
都以为最难的是技术。
写代码嘛。
错了,最难的是数据这头犟驴。
你在北京买了一包辣条,购物车显示空了。
结果,你进行了一次刷新的操作,流量就此切换到了上海的机房,购物车进而向你传达这样的信息:那包辣条仍然处于存在的状态,请你执行付款的行为。
这不叫多活,这叫精分。
为了实现“看起来只有一个数据库”,那帮聪明人想破了头。
哪种同步复制,哪种异步复制,哪种半同步复制,恰似极象谈恋爱之际的三种状态:始终时刻报备,有空才想起来再说,全凭随缘。
高德地图存你7000亿条足迹,怎么搞的?
上海、张北、深圳这三个地点,他们借助OceanBase实现了同时处于存活状态。
你感觉不到切流量,因为他们把数据同步玩成了艺术。
但艺术,往往是钱烧出来的。
### 网络抖一下,心脏停一拍
还有个看不见的敌人,叫光速。
北京到上海,光纤直连,理论上延迟多少?
几十毫秒。
就这几十毫秒,够一个分布式事务死给你看。
你以为的“同时写入”,在物理世界里就是先后顺序。
如同Uber那般规模的公司,每日要处理五百万起Hive事件,还要进行跨区域复制重达8PB的数据。
那个人弄了个称作HiveSync的系统,如同患有强迫症似的,每隔四个小时就去查看一回数据是否出现了“魂穿”错位的情况。
存在这样的情况需要解决:上海所呈现出的数据表述自己已然完成,北京所呈现出的数据也表述自己已然完成,然而实际上二者所指的并非是同一桩事情呢。
别瞎起哄,这玩意真不是谁都配得上
看过太多创业公司,融资了几个亿,嗷嗷叫着要上异地多活。
为啥?
老板觉得有面子。
但你一个日活几万的小破站,至于吗?
真至于吗?
中金公司开展“两地三中心”举措,是源于一次交易失败,所赔付的资金数额足以购置一个机房。
腾讯云有着同城双活方案,其将RPO(也就是数据丢失量)做到了5秒以内,这是由于客户缴纳的保护费达到了相应标准。
你那个博客挂了,用户会等你泡杯茶再刷新。
别凑热闹。
所谓多活,其实是认怂
折腾到最后,你会发现,搞异地多活,不是为了战胜灾难。
是承认自己搞不定老天爷。
承认光纤会断,电会停,人会手滑。
承认哪怕你把代码写得像诗一样优美,一把火也能烧干净。
所以,我们只是分散地站着,各自举着火把。
告诉那个半夜三点下单的傻子:别怕,我看得见你。
数据还在,服务就在。
哪怕一座城市暗了,另一座城市的灯,还为你亮着。
这大概就是技术里,最像浪漫的那一点点东西。

Comments NOTHING