HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

淘宝网架构师岳旭强的年度展望

  • 2010-03-08
  • 本文字数:2362 字

    阅读完需:约 8 分钟

一场危机赢得高度关注的时候,它已经不是危机,人们是要处理这个危机。”——马云

2009 年是挑战和机遇并存的一年,对大部分人来说,已经习惯了金融危机,并努力解决危机。在技术圈子也一样,被裁员的肯定也找到了工作,所以都在踏实做技术。言归正传,先念叨念叨 2009 年的一些故事,寻个回忆,找个乐子。

数据扩展性探讨和总结

金融危机是电子商务的机遇,所以 09 年是淘宝高速发展的一年。当一个网站从百万、千万记录的数据规模,增长到亿、十亿、几十亿记录的数据规模时,是一个量变到质变的过程,单纯的硬件升级已经达到了瓶颈,而需要在整体结构上做文章。09 年一年,大部分时间都在数据的扩展性上努力。

对于一个电子商务网站来讲,订单是最核心的数据,也是增长最快的数据。对于数据的扩展性来讲,最传统也是最简单有效的模式是数据库的分库分表。当订单和分库分表相遇,会有什么火花迸发出来?09 年初碰撞了很久,结果产生的火花很小。最大的问题在于数据分割的规则,无规则的水平分割肯定会带来数据合并的开销,而按照业务规则拆分,会因为买家和卖家的查询需求不同而导致数据不能分割,唯一可行的火花是把订单双份保存,买家卖家各自一份,只是成本比较高,而且对数据同步的要求非常高。

于是我们初步决定按照双份保存的方式拆分订单,而有一天,仔细查看了订单访问的情况,发现订单数据库 90% 以上的压力来自于查询,而查询中 90% 以上的压力来自于非核心业务,仅仅是订单数据的展现,对一致性和实时性的要求很低。

因为数据量大,造成数据库压力大,天然想到的是分散压力,其办法就是分库分表。有些时候我们想问题不妨直接一点,既然压力大,能不能减小压力呢?通过对订单访问情况的了解,发现昂贵的主数据库,有 80% 以上的压力给了不重要的需求,这个就是我们优化的关键,所以订单最后采用了读写分离的方案,高成本的主数据库解决事务和重要的查询业务,80% 以上不重要的读,交给了低成本的数据库服务器来解决,同时对数据复制的要求也很低,实现无太大难度。

另外一个有意思的案例是商品的数据扩容,商品的水平分割非常容易,按照卖家进行拆分即可。有了订单的先例,首先想到了读写分离,因为成本可以做低。开始实施后一段时间,又仔细回想了一下商品的整体需求,突然发现商品其实不需要和订单同等的要求,一定要采用高成本的主数据库吗? 全部采用低成本的普通服务器来做数据库是否可行?经过仔细的评估,发现是可以接受的,而这样就导致之前已经启动的商品读写分离项目的一部分工作白做了!

故事讲完了总是要有点总结,来点虚的先:对于原始需求的清晰了解是系统决策的前提,否则弯路肯定要走,而对原始需求的了解并不容易,中间会有很多干扰和阻力,前面的实例看起来很简单,但是在一个运行了 5 年的系统上来了解本质,来进行变更,并没那么容易。另外,经验有些时候会成为系统决策的障碍,这个很矛盾,所以需要有归零的心态来思考问题。说到底,回归本源。

再来点稍微实际一点的,对于大型分布式系统的数据访问,一个统一的数据层是非常必要的,封装水平、垂直的数据分割,封装读写分离,封装数据访问的路由、复制、合并、搬迁、热点处理等功能,并且要对应用透明,应用针对性的,可以在 JDBC 层面包装,数据库针对性的,可以在数据库协议层包装,比如 Amoeba。

关注系统和人的交互

还有一个故事,在数据层的前期版本,为了做到透明的路由,曾经采用无 SQL 的方式,所有的数据库访问都是写代码来做。上线后发现一个非常痛苦的问题,无法和 SQL 对应,排错非常难。曾经一次 DBA 发现数据库上一个查询耗费太多资源,把优化后的 SQL 给开发人员改进,开发人员好几天没找到具体是哪个查询。

另外一个在 2009 年的感触是业界服务化的实施情况,很多组织都在实施服务化,系统层面都很成功,通信、负载均衡、消息系统、服务容器等都有很多成果,但是实施一段时间以后的效果并不是非常好,依赖复杂,变更混乱,效率低下。究其根本,是对人的关注不够,缺少的产品化的服务运维,缺少服务治理。

上面的两个例子都是对人的关注缺失,技术人员做系统,大部分都更关注技术,而忽视技术的创造者和使用者——人。软件或服务的可测试性是对测试人员的关注、可维护性和可管理性是对运维人员的关注,而一个框架的易用性是对所有使用人员的关注。除非能做出自己进化的 Skynet(注:Skynet(天网)出现在《终结者》系列电影中,是一个人类于 20 世纪后期创造的以计算机为基础的人工智能防御系统,最初是研究用于军事的发展。天网在控制了所有的美军的武器装备后不久,获得自我意识,并且认定人类是它存在的威胁。于是立刻倒戈对抗其创造者,采用大规模杀伤性武器(甚至核暴)来灭绝全人类。),否则还是要多关注系统和人的交互。

关注可用性

还有一个感触是业界对可用性这个基本指标的关注度不够。几乎所有的框架都会说自己的扩展性多高,性能多好,而很少会提到监控有多强、排错有多容易,很少提到在故障时怎么做隔离,怎么做降级;从这个角度看,商用的产品确实做得好很多;关于性能相关的文章搜索一下,很多,各种优化策略,各种优化方法,而可用性方面,找到的系统性的知识真的很少;希望是我了解的不多。

回顾过去,展望未来。2010 年,很多可以做的事情,面向服务系统的隔离和降级、系统可维护性的提高、协程和异步模式在 web 应用的全面使用……

免责声明:我很现实,为解决问题和完成工作不择手段,并且不懂架构是什么意思,以上观点如有雷同,纯属巧合!如有异议,欢迎拍砖!


个人简介:岳旭强,淘宝网技术专家。2004 年加入淘宝,见证了淘宝网业务以及技术上完整的发展过程;在过去 5 年的时间中,参与了淘宝几乎所有核心系统改造,并主导了用来支撑淘宝网未来高速发展的核心业务中心的建设。岳旭强现在负责网站整体业务架构的设计和规划,在大型交易网站的设计和调优方面有丰富的经验。

2010-03-08 05:3218414

评论

发布
暂无评论
发现更多内容

警告!恶意域名疯狂外联,原因竟然是……

权说安全

应急响应 安全服务

Explore WiFi 7: RF module chips QCN9274 and QCN9224 technical differences

wifi6-yiyi

软件测试学习笔记丨Pytest - 测试框架介绍(setup / teardown)

测试人

软件测试

【HDC 2024】探索、交流、成长,华为云助力开发者成就星辰大海梦想

华为云开发者联盟

软件开发 华为云 华为云开发者联盟 华为开发者大会2024 企业号2024年6月PK榜

实力出圈!赛博威荣获双项殊荣,数字化能力再获认可

赛博威科技

Toco x Databend:Databend Cloud 如何满足 Web3 大数据服务的严苛考验?

Databend

mac鼠标自动点击工具:RapidClick for Mac 激活版

你的猪会飞吗

Mac 软件 mac破解软件下载 Mac电脑软件

Claude 3.5 Sonnet发布,比GPT-4o更智能;OpenAI CTO预测1年半“博士级智能”AI将出现|AI日报

可信AI进展

#人工智能

探索虚拟线程:原理与实现

京东科技开发者

美丽搜索,MeiliSearch

为自己带盐

meilisearch

智能化改造助力企业高质量发展

天津汇柏科技有限公司

智能化 高质量发展

【论文速读】|利用大语言模型实现现实世界代码的翻译:一项针对翻译到Rust语言的研究

云起无垠

Moka Ascend 2024|势在·人为,技术创新,激发企业管理内在效能

科技汇

人工智能 | 大模型之提示词工程:少样本提示

测试人

软件测试

分库分表后复杂查询的应对之道:基于DTS实时性ES宽表构建技术实践

京东科技开发者

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

火山引擎边缘云

CDN 边缘计算 边缘容器 CDN技术 边缘计算平台

小浣熊家族 X InfoQ 写作社区有奖征文大赛获奖名单公示

InfoQ写作社区官方

热门活动

玩转Spring状态机

京东科技开发者

直播分享:企业级AI应用玩转全栈开发

XIAOJUSURVEY

开源 全栈 直播 LLM

凤凰项目(Phoenix Project)精要 - 简介

Anliven

读书笔记 团队管理 DevOps 运维 团队效能

TDengine 签约精诚瑞宝,开拓更智能的 IT 服务和管理平台

TDengine

数据库 tdengine 时序数据库

淘宝网架构师岳旭强的年度展望_Java_岳旭强_InfoQ精选文章