这是一篇来自鲲鹏会的文章,其内容是毕玄在TGO 鲲鹏会杭州分会活动现场分享的《云时代的软件架构》的整理。特别转载到云栖社区,让更多开发者深入了解阿里架构的变迁和对云技术的一些新的想法。
2018 年 12 月 15 日,TGO 鲲鹏会杭州分会拉开了 TGO 特有的技术人年会「E 家宴」的帷幕,60+CTO/ 技术 VP 相聚在杭州殊胜龙井酒店。其中,阿里巴巴系统软件、中间件、研发效能负责人毕玄,连尚网络副总裁 &WiFi 万能钥匙万能接入业务群 CEO、TGO 鲲鹏会上海会员万玉权, 同盾科技联合创始人 & 技术 VP、TGO 鲲鹏会杭州会长张新波,及 TGO 鲲鹏会杭州会员、大搜车技术 VP 沈淦、尚尚签 CTO 陶真,和浪潮集团 AI 首席架构师 张清等重磅嘉宾应邀出席,与参会者一起探讨云时代的软件架构、技术红利、团队转型 / 演进 / 发展等话题。
毕玄,阿里巴巴系统软件、中间件、研发效能负责人。
2018 级电子与信息领域工程博士研究生。2007 加入阿里,经历阿里电商 10 多年来的技术架构演进,打造了阿里重要的中间件 HSF 服务框架,设计并带领多团队实现了阿里电商异地多活架构。2011 年开始打造了阿里自研的容器及对资源利用率提升巨大的统一调度系统。先后任职淘宝网平台架构部架构师、集团核心系统研发部资深技术专家、阿里中间件负责人。
奠定阿里五年业务快速发展基础的架构改造
阿里经历了几次较大的软件架构迭代,首先是分布式时代的阿里电商架构。淘宝从 2007 年开始做新一轮架构改造,淘宝从 2007 年开始碰到的最大的问题,即访问量增长太快,导致出现了一个问题:不能加机器了,即伸缩性的问题。淘宝在业务发展过程中,2008 年以前所有的解决方案就是简单加机器就能解决,但是到 2007 年突然出现加不了,那时候淘宝数据库用的是中国最好的 IBM 的小型机。以前数据库连接我们用 Oracle,Oracle 数据库最大的问题是每个链接消耗的内存特别大。因为内存始终有瓶颈,所以当我们内存、数据库连接不够的时候,我们的解决办法是多插内存条,后来内存条插满了,就没有办法了。所以 2007 年淘宝判断必须做新一轮的架构改造,让我们具备水平伸缩能力。
大家现在都知道一个思路,既然一个系统加不了机器,数据库抗不住,那就把一个数据库拆成两个数据库,把访问数据库的业务尽可能集中。以交易为例,以前是所有的 web 应用都要访问的,如果你把交易逻辑抽象出来,把访问数据库操作的地方抽象成一个系统,而这个系统其实不需要很多机器,连接数就可以大幅度下降,这是当时的思路。
那时候淘宝面临主要问题是能否再次水平伸缩,但是还有第二个问题,那就是被技术团队投诉研发进度太慢。我加入淘宝时有 100 多个工程师,开发了同一个系统,每个人都可以改里面所有的代码。这个时候问题就来了,比如我接了一个业务,我要改这个类这一行代码,然后另外一个业务也要改同一类同一行的代码。等这两个人一提