技术圈重磅!饿了么多活终于成功 实现首次多活生产环境全网切换
北京时间5月9日消息,饿了么CTO张雪峰,在朋友圈透露,饿了么多活(Multi-Active IDCs/Regions)终于取得成功,实现首次多活生产环境全网切换(灰度)。
这家外卖巨头的CTO回顾到:“自去年八月决定做多活,历经半年规划、调研、设计、协调,又经过三个月所有技术团队连续冲刺开发、改造及业务/产品/运营等兄弟团队的鼓励、支持甚至容忍,今晚,我们终于做到了!”
张雪峰称:“据我所知(如不准确,请指出并见谅),国内日均(非峰值或大促期间)订单100万以上的交易平台,除阿里巴巴(包括蚂蚁金服 菜鸟网络)真正意义上实现了全网多活(不是双活),迄今为止应该还没有第二家可以完全做到。”
“有些公司或许正在规划中,有些团队或许正在改造中,还有些或许正在经历和饿了么已经历过的相似风雨与酸甜苦辣……”
那异地多活的最大挑战在哪里?除了希望大家去搜索了解电商、交易、异地多活、数据实时性、数据一致性、跨机房多路数据复制、避免跨机房循环复制等知识外,张雪峰总结了两方面难度:技术和实施。技术难度上,最主要是实时数据强一致性(尤其外卖及配送这种即时性很强业务场景),包括 Cross-IDC DRC解决的app data strong consistency和Cross-IDC ZK Replication解决的config data strong consistency,而无论哪种data replication,都必须解决循环复制问题。其中,饿了么解决的Cross-IDC ZK Replication为业内首创,当初规划、选型、设计时没有任何大规模先例可以参考。
实施难度上简单总结就是,必须全员all-in冲刺,任何一个环节滞后,结果肯定是made nothing。张雪峰说:“给高速飞行(产品迭代)中的飞机换引擎,真不是闹着玩的。”
对于中间历程,他说,确实有太多酸甜苦辣。“技术团队所有同学承担了‘不再尝试灾备过渡,直接进行多活改造’的巨大压力。好在,到今天为止,我们都挺过来了。”他认为,所有付出的努力都是值得的,所有经历的风雨,只为今后的长治久安——因为多活就是最好的灾备。
对于为什么要实施多活,2个月前,张雪峰在接受云栖社区采访时曾做过剖析:“主要是上云后发现,事情比他们想象的要复杂的多——IDC和云机房之间要拉光纤,很多事情需要配套。”在一次核心主备全挂后,张雪峰拍板,决定更进一步:实施多活。
据悉,饿了么只用了三个季度搞定多活,而当年的淘宝则用了三年时间。为此,在朋友圈,他除了列了一串名单感谢饿了么内部员工,他也特别感谢外部人员。包括阿里云(好多同学,不一一列举了)、毕玄(中国多活建设第一人)、阿里平台架构部等。张雪峰说:“没有大家,我们没那么快走到这一天!”
张雪峰微信朋友圈
对于昨晚今晨的首次多活生产环境全网切换(灰度),饿了么CTO张雪峰也表示,这只是一个开始,前方还有更难、更复杂的技术挑战。“多活切换只是技术10→100过程中的第一步,可能还会伴随局部抖动与新的坎坷。”他鼓励饿厂所有技术同学一起拼——for Making Everything 30’,for 下一个九年!
相关阅读:
饿了么四次技术进化的曲折路,记访谈张雪峰 饿了么运维负责人程炎岭分享:饿了么Redis Cluster集群化演进掌握第一手干货,欢迎关注阿里云云栖社区官方微博:http://weibo.com/u/1939498534
阿里 双11 同款流控降级组件 Sentinel Go 正式 GA,助力云原生服务稳稳稳 微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。
最近几天,好几个小伙伴在后台询问,改造后的 sentinel-dashboard 什么时候开源。讲真,不是不想给大家放出来,是因为一些地方还没有完善好,怕误导了大家,在经过了一个星期业余时间的努力,终于把基础版本搞定了。
【阿里云新品发布·周刊】第18期:应用高可用服务 AHAS 商业化首发,一步提升应用可用性 点击订阅新品发布会! 新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多内容,了解更多 应用高可用服务 AHAS 商业化首发 2019年7月17日15时,应用高可用服务 AHAS 商业化首发。
相关文章
- 用大数加法实现斐波那契数列
- Bat批处理命令实现一键安装mysql环境
- Java实现 洛谷 P2089 烤鸡
- java实现第五届蓝桥杯等额本金
- java实现第六届蓝桥杯生命之树
- Java实现第八届蓝桥杯青蛙跳杯子
- Java实现 蓝桥杯 历届试题 连号区间数
- 为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
- 为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
- paip. 混合编程的实现resin4 (自带Quercus ) 配置 php 环境
- Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
- 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入
- Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
- 单向/双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)
- 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
- 一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
- 多目标灰太狼算法求解环境经济调度问题(IEEE30)(Matlab实现)
- 【无人机】密集城市环境中无人机空对地对地 (U2G) 路径损耗研究(Matlab代码实现)
- 【雷达检测】基于复杂环境下的雷达目标检测技术(Matlab代码实现)
- 深度解析HashMap底层实现架构
- 技术分享 | 接口自动化测试,如何实现多套环境的自动化测试?
- 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作
- Django与LayUI 框架实现表格分页