山下烽火,云上江湖:蚂蚁SOFAStack是怎样炼成的?( 二 )


毫无疑问 , 这是一条无人探索过的道路 。
当然 , 你知道阿里人的秉性 , 退缩和守成从来不是他们的标签 。 经过长达一年左右的思考和论证 , 技术团队果断驶入第二条赛道 。 2007年起 , 支付宝率先启动了对交易系统、商户系统、会员系统、支付清算系统的改造 , 一个全新的架构正在孕育之中 。
这套分布式架构就叫SOFA 。
为什么叫这个名字?其一是源于当时正火的SOA概念 , 即Service-Oriented Architecture , 面向服务的架构 , 在此基础上加入金融业务 , 就构成了SOFA的全称:Service-Oriented Fabric Architecture 。
其二则是开发者的私心 , 希望能够像沙发(Sofa)一样 , 让工程师可以非常爽地工作 。
从连接器到工具库
什么是SOA?用偏技术的语言表述 , 就是把企业的IT系统以服务的方式重新组织 , 再通过服务总线连接起来 , 形成可插拔式的企业IT架构 , 这个架构就是SOA 。
你或许觉得这个释义很难懂 , 没关系 , 因为在那个年代 , SOA纯粹只是一套面向传统企业IT架构的思想 , 换句话说 , 一套理论框架罢了 。
你问业界具体的成功实践?抱歉 , 没有 。
初次试水 , 蚂蚁的探路者们走得非常谨慎:第一代SOFA只解决两个问题 , 一是充当一个类似于胶水、连接器的机制 , 把分布式系统连接成整体;二是做到每一个服务组件化 , 让每个工程师专注做好各自的组件 , 最后把组件拼装在一起成为服务 , 再把服务拼装在一起组成整个系统 。
用黄挺的话来说 , SOFA能够隔离出一些不同的模块 , 由不同的人去做开发 , 每个人有了更加细致的分工 , 不会跟别人出现太多的交叉 。
第一代SOFA清晰地定义了团队之间的边界 , 何时分工协作 , 何时紧密联合 , 安排得明明白白 。 黄挺举了个例子:简单的一次转账业务 , 系统需要调用用户的通讯录 , 调用账务相关的子系统——可能还得去问银行 , 账户余额到底够不够?整个流程涉及到非常复杂的系统交互 , 这些由不同团队开发和运维的系统 , 怎样才能高效交互、稳定完成每一笔业务呢?这就仰赖SOFA从中协调和沟通了 。
燃眉之急解决了 , 但初生的分布式中间件SOFA并不能处理所有问题 。 它还需要打怪升级 , 积累经验 , 向下一代、再下一代演化 。
山下烽火,云上江湖:蚂蚁SOFAStack是怎样炼成的?
无人探索的道路上没有先驱者 , 只有野蛮生长的技术难题在横冲直撞 。
在SOFA的加持下 , 支付宝一边拆分金融业务系统(后来的业务中台)一边拆分底层IT系统(后来的数据中台和计算中台) , 在拆分过程中还要应对历年双十一的海量数据冲刷 , 以及不断涌现、千奇百怪的技术问题 。 甚至在解决分布式服务一致性问题时 , 由于业界提出的两个SOA事务标准都无法支撑支付宝核心系统的交易量 , 团队干脆一狠心一咬牙:现有的标准都不可行 , 要不我们自己提一个吧!
逢山开路 , 遇水搭桥 。 很难说清SOFA这些年来的演进中 , 他们遭遇过多少类似的阻碍 , 又有多少奇思妙想和技术实践沉淀下来 , 最后凝练成SOFA内部的几行代码 。
他们在无人区设下哨塔 , 漫漫长夜被灯火点亮 。
第一代SOFA , 做到了模块化 。
第二代SOFA , 完成了服务化 。
第三代SOFA的亮点 , 则是被誉为蚂蚁黑科技的单元化 , 异地多活架构让服务器资源水平扩容的难度大大下降 , 保障了用户的每一笔订单平稳顺滑 。 团队坦陈 , 面向超大规模互联网金融交易的分布化改造 , 单元化这一技术构想完全是被业务倒逼的 , 业界没有先例可循 。
我们找到过一些论文、一些概念 , 但以支付宝这么大的体量 , 没有人确定这事儿真的能做成 。 团队成员感慨 。