山下烽火,云上江湖:蚂蚁SOFAStack是怎样炼成的
SOFAStack:山下烽火,云上江湖 有人说,历史是由懒汉推动的。 科技的演进史,其实就是人类不断偷懒的过程。我们懒得浪费体力,于是有了蒸汽机;我们懒得动笔演算,于是有了电子计算机;我们懒得随身携带现钞,于是有了线上交易和无接触支付……程序和信息成为这个时代的基底,服务和应用围绕着我们的指尖打转。 我们从网络上索取一切,海量的数据和代码在赛博空间里奔流不息。 突然有一天,构筑代码世界的工人们也犯懒了。为首的“懒汉”开始思考,能不能把一些通用的代码模块打包起来,供给上层随时取用,这样就省下了重复“造轮子”的力气,让敲代码也成为一种模块化的工作? 这一“偷懒”,就偷出了一个新概念:中间件。 无人探索的道路 对普通人来说,“中间件”是一个很遥远的词汇。 从技术层面来讲,中间件是介于基础设施和业务系统之间的特殊软件。程序员们别出心裁地构思了各种比喻:有人说它是建筑工地上的“预制件”,让工人不必从头开始搅拌水泥;有人说它是整合货源的“中间商”,让商家免于一次次询价比价的操劳…… “基础设施和业务系统之间,有很多通信和集成方面的要求,让每个业务系统都去做一遍是很浪费人力的。”蚂蚁集团高级产品专家马振雄这么说,“大家都有这样的诉求。” 时势造英雄,SOFAStack在蚂蚁集团应运而生。 它诞生得悄无声息,初衷只是为了“解救”支付宝。那还是青涩年代的支付宝,没有琳琅满目的蚂蚁森林、花呗和健康码,用4个“一”就能概括它的全部:一个简单的应用,装在一台应用服务器上,使用一个数据库,服务一个大客户——淘宝。 简单、轻快、便捷,这个系统支撑了支付宝从2004年到2006年早期的发展。但是随着交易量的攀升、业务的复杂化,支付宝很快遭遇了成长中的阵痛。 “从刚开始几十个人,后来几百人,到现在几千人的技术团队,在不同规模下的研发方式和组织方式都是不一样的。”蚂蚁集团高级技术专家黄挺说,“人一多,你发现不同的人写的代码会不一样,冲突也越来越多。” 概而言之,研发效率出现了问题。 如果说从前的支付宝是一间平房,如今则要发展成一座城市。而每搭建一座建筑,工人都必须从头开始烧制砖块、搅拌水泥——没有挖掘机,没有液压锤,一切从手无寸铁开始,对以“建设城市”为己任的团队来说,这是完全不可接受的。 举个例子,当时支付宝的一个电子钱包系统iWallet,每次启动需要五六分钟,足够开发人员下楼抽一支烟。如果发现错误,就得修改后重新启动,开发人员每天深陷在代码编译和重启的“死循环”之中。 究其原因,就是因为iWallet系统包含了几十个工程,有十多个团队并行开发。支付宝原本的系统无法支撑这么复杂的业务逻辑,也难以让那么多工程师在一起并行工作,大家把它称为monolithic——庞大的单体系统。 支付宝的诉求显而易见:第一,希望成百上千个项目并行进行,每个工程师可以不受干扰地工作;第二,当业务逻辑增加的时候,系统的复杂度不要成指数级上升。 它需要一套能够力挽狂澜的“中间件”。 2006年,契机来临。技术团队在这一年开了一连串的会,会议的核心议题只有一个:决定支付宝未来的技术架构。团队内部分成两派:第一派提议向银行老大哥学习,走集中式架构的老路;第二派则认为分布式架构才能支撑未来的交易支付系统,而且不是客户端/服务器时代那种小规模架构,是互联网时代的超大规模分布式架构。 毫无疑问,这是一条无人探索过的道路。 当然,你知道阿里人的秉性,退缩和守成从来不是他们的标签。经过长达一年左右的思考和论证,技术团队果断驶入第二条赛道。2007年起,支付宝率先启动了对交易系统、商户系统、会员系统、支付清算系统的改造,一个全新的架构正在孕育之中。 这套分布式架构就叫“SOFA”。 为什么叫这个名字?其一是源于当时正火的“SOA”概念,即Service-Oriented Architecture,“面向服务的架构”,在此基础上加入金融业务,就构成了SOFA的全称:Service-Oriented Fabric Architecture。 其二则是开发者的私心,“希望能够像沙发(Sofa)一样,让工程师可以非常爽地工作。” 从“连接器”到“工具库” 什么是SOA?用偏技术的语言表述,就是把企业的IT系统以“服务”的方式重新组织,再通过“服务总线”连接起来,形成可插拔式的企业IT架构,这个架构就是SOA。 你或许觉得这个释义很难懂,没关系,因为在那个年代,SOA纯粹只是一套面向传统企业IT架构的思想,换句话说,一套理论框架罢了。 你问业界具体的成功实践?抱歉,没有。 初次试水,蚂蚁的“探路者”们走得非常谨慎:第一代SOFA只解决两个问题,一是充当一个类似于“胶水”、“连接器”的机制,把分布式系统连接成整体;二是做到每一个服务组件化,让每个工程师专注做好各自的组件,最后把组件拼装在一起成为“服务”,再把“服务”拼装在一起组成整个系统。 用黄挺的话来说,“SOFA能够隔离出一些不同的模块,由不同的人去做开发,每个人有了更加细致的分工,不会跟别人出现太多的交叉。” 第一代SOFA清晰地定义了团队之间的边界,何时分工协作,何时紧密联合,安排得明明白白。黄挺举了个例子:简单的一次转账业务,系统需要调用用户的通讯录,调用账务相关的子系统——可能还得去问银行,账户余额到底够不够?整个流程涉及到非常复杂的系统交互,这些由不同团队开发和运维的系统,怎样才能高效交互、稳定完成每一笔业务呢?这就仰赖SOFA从中协调和沟通了。 燃眉之急解决了,但初生的分布式中间件SOFA并不能处理所有问题。它还需要打怪升级,积累经验,向下一代、再下一代演化。 无人探索的道路上没有先驱者,只有野蛮生长的技术难题在横冲直撞。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |