乐趣区

关于程序员:鸿篇巨制蚂蚁金融级分布式架构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 并不能解决所有问题。它还须要打怪降级,积攒教训,向下一代、再下一代演变。

无人摸索的路线上没有先驱者,只有横蛮成长的技术难题在桀骜不驯。

在 SOFA 的加持下,支付宝一边拆分金融业务零碎(起初的业务中台)一边拆分底层 IT 零碎(起初的数据中台和计算中台),在拆分过程中还要应答历年双十一的海量数据冲刷,以及不断涌现、千奇百怪的技术问题。甚至在解决分布式服务一致性问题时,因为业界提出的两个 SOA 事务规范都无奈撑持支付宝外围零碎的交易量,团队罗唆一狠心一咬牙:现有的规范都不可行,要不咱们本人提一个吧!

逢山开路,遇水搭桥。很难说清 SOFA 这些年来的演进中,他们遭逢过多少相似的妨碍,又有多少奇思妙想和技术实际积淀下来,最初凝练成 SOFA 外部的几行代码。

他们在无人区设下哨塔,漫漫长夜被灯火点亮。

第一代 SOFA,做到了模块化。

第二代 SOFA,实现了服务化。

第三代 SOFA 的亮点,则是被誉为“蚂蚁黑科技”的单元化,“异地多活”架构让服务器资源程度扩容的难度大大降落,保障了用户的每一笔订单安稳顺滑。团队坦陈,面向超大规模互联网金融交易的散布化革新,单元化这一技术构想齐全是被业务倒逼的,业界没有先例可循。

“咱们找到过一些论文、一些概念,但以支付宝这么大的体量,没有人确定这事儿真的能做成。”团队成员感叹。

就这样,随着支付宝架构的逐次优化,SOFA 也在一直迭代和成长。从最后仅是一个简略的框架,到起初强化通信性能、晋升容灾效率、建设异地容灾架构、单元化革新、增加 LDC 逻辑数据中心我的项目……SOFA 羽翼渐丰,安插在它身上的技术工具越来越多元,它也逐步超出了“中间件”的领域,成为一座事实上的“工具库”。

到这里为止,SOFA 走完了本人的第一段浴火重生之路。它的全名也被改成了 Scalable Open Financial Architecture,致力于解决金融级零碎构建的基础架构问题。开发者还在 SOFA 前面加上了 Stack,这个单词的意思是“栈”,能够简略地了解为“套组 / 组合”。

认真品尝,不难从命名中读出开发者的愿景和苦心:

  • Scalable,可扩大能力,解决更多的交易,包容更多的业务,可能让几千甚至上万个工程师一起协同工作的可扩大架构。

Open,凋谢,既让业务利用容易上手,又能和经典架构有机交融。

Financial,意味着 SOFAStack 必须具备金融级属性,真正实现金融级的一致性、可用性和稳定性。

在 2020 年公布的《SOFAStack 金融分布式架构白皮书》中,蚂蚁团体对 SOFAStack 的严格定义是:一套用于构建金融级云原生分布式应用的技术栈。

禁受了多年来大促流动的考验,撑持了蚂蚁团体全域业务的倒退,SOFAStack 已成为蚂蚁外部的明星产品。这时,有人望向山门之外的世界:分布式架构开始走入公众视线,中间件市场山雨欲来。

团队终于有人按捺不住,提议:要不,咱们进来看看?

一呼百应。山门大开,SOFAStack 闯入江湖。

出山

江湖险恶,暗流汹涌。

SOFAStack 出山之前,传统企业外围零碎依然是集中式架构的天下,尤其是赫赫有名的 IOE 架构:IBM 提供计算能力弱小的小型机,EMC 配套低廉的高端存储,联合 Oracle 的数据库,造成集中式架构“三驾马车”。而大量业务逻辑的执行,则要依赖重量级的 J2EE 容器或交易中间件 CISC 等。

但在凋敝之下,基石曾经不稳。IBM 主机的单机性能诚然弱小,可随着大量金融机构走向数字化转型、积极开展线上业务,基于主机零碎构建的单体式外围利用曾经无奈再撑持这么宏大的并发量。

怎么解决?只能程度扩容。

但一扩容就扩出了问题:在 IOE 架构下,降级主机配置的价格十分低廉,远远不是所有企业都能承当的。早在 2013 年双十一,Oracle 就从美国把天价账单甩到阿里巴巴背后:你们双十一的流量全跑在咱们数据库上,加钱!

幸好阿里留了后手:没想到吧,咱们用的是自研数据库 OceanBase!

“国产”、“自研”,这当然是老本角度之外的另一个重要考量。蚂蚁团体敏锐地察觉到了市场上“去 IOE 化”的呼声,SOFAStack 适时入局。

谁来当第一个吃螃蟹的人呢?南京银行挺身而出。

“蚂蚁之前的成就,在金融方面的翻新,其实很多银行都看在眼里。”作为 SOFAStack 商业化团队负责人,马振雄示意前景乐观,“共识曾经凝聚了,方向大家也都认可。他们也想去走这条路。”

2017 年初,南京银行确立了“双模运行”的选型方向:在保留传统的“稳态”外围之余,搭建一个凋谢灵便的“敏态”外围。同年 4 月,蚂蚁平台架构部、金融外围平台部、技术危险部、微贷事业部等多个团队精锐尽出,对南京银行进行全面问诊。

毕竟是第一个客户,做不好就是自砸招牌,谁也不敢轻忽粗心。SOFAStack 亮出本人的全副武装,这将是它的生涯首秀。

7 月,蚂蚁团体派驻技术团队现场入驻南京银行,包揽了分布式架构转型的路线图和顶层架构设计,要让客户“在设计之初就防止走弯路”。10 月,南京银行在云栖大会现场公布了本人的互联网金融开放平台,取名“鑫云 +”。

11 月 18 日,“鑫云 +”正式落地。

第一枪胜利打响,SOFAStack 在商业化过程中排汇教训、疾速调整,以更麻利的步态应答客户的反馈和需要——依照惯例流程,“响应”意味着一条十分漫长的链路:客户的需要先反馈给交付部门和售后运维部门,运维部门提炼需要后提交到产品团队,产品团队给出排期,再让技术团队去落实,最初再发一个新版本由售后团队去运维。

但在南京银行,有蚂蚁派出的“联结阵型”镇场:产品、技术、业务、售后、交付、运维,一应俱全。有任何 bug 或产品需要,项目组就地消化,高速解决。甚至在 1 天之内,一个产品间断发了 6 个版本,这种互联网式的“闪电迭代”让传统金融行业眼界大开。

在商业化、产品化的路线上打磨历练,第四代 SOFAStack 破茧。

南京银行之后,SOFAStack 和蚂蚁提供的整套金融级云原生架构解决方案失去了业界认可,越来越多急于解脱 IOE 掣肘的金融机构登门拜访,向蚂蚁抛出了橄榄枝。

水域被厉害搅动,“新物种”正在变质中。

此时有声胜无声

现在再看 SOFAStack 的客户名单,能够列出长长的一串。

有声名显赫的大型机构,也有眼光独到的小企业,有平顺的过渡期,也有困难重重的性能适配问题。马振雄回顾说,有时候团队刚部署完平台,进入到开发测试环节,客户就会在一天之内就一款产品就提出几十个问题。

我问他,泄气吗?

马振雄笑说,团队更多是“痛并高兴着”。

痛,能够了解,蚂蚁多年造就的明星产品,一下子被迎面而来的问题打懵了。高兴,则是从客户的态度中看到对本身的冀望,如果对产品一点信念都没有,团队迎来的只会是难堪的缄默。马振雄说,这样的客户十分难能可贵,“咱们不怕声音,咱们最怕的是没有声音。”

在众声喧闹的客户名单里,华瑞银行是不可漠视的一员。

和动辄千亿的股份行、城商行,乃至资产过万亿的南京银行相比,资产规模 300 多亿的上海华瑞银行,或者只是一个“小客户”。

但也正因其小而能成其大,SOFAStack 与华瑞银行单干的案例,被马振雄评估为“做民营银行业务的标杆”。在与阿里和蚂蚁团体单干之前,华瑞银行就花了将近 1 年工夫钻研云平台建设,它没有线下网点和柜面,所有的获客、开户、存贷业务都在线上实现。

这是一家人造偏差互联网化的银行,和骨子里烙印着互联网基因的蚂蚁团体一拍即合。2019 年底,华瑞银行搭载了金融级分布式架构 SOFAStack、mPaaS 挪动开发平台、阿里云“飞天”云计算操作系统,构建起本人的“祥云”专属金融云平台,撑持手机银行、营销、反欺诈、贷款核算等业务零碎。

十八般兵器开箱即用,翻新之路,踏雪无痕。

华瑞银行科技部总经理叶宁在一次专访中提到,中小银行要学会“有所为,有所不为”,既然不具备国有大行和股份行的技术实力,就须要找到互补的金融科技公司提供助力。

“通过和阿里云、蚂蚁团体的单干,咱们能够从低效的工作中解放出来,不必把精力花在标准化的软硬件技术反复建设上。”叶宁将这个过程比喻成“做菜”,有人喜爱从零开始种菜、养猪、榨油,这当然合乎绿色衰弱理念,但并不是每个家庭主妇都有余力承当这些工作。

“华瑞银行不想做农民,也不想做养殖户。咱们就想把超市里加工好的半成品拿过去,做出合乎本人口味的菜。”叶宁说。

——等等,这个设定是不是很耳熟?

这个微妙的比喻,恰好和一开始“中间件”诞生的意义不约而同。建筑工地上有了搅拌器,家用冰箱里有了半成品,模块化的组件伸手即得,所有人都不用在反复低效的劳动上消耗精力。

2020 年一季度,华瑞银行手机端获客增长 468%,零碎开发速度晋升 30% 以上,零碎环境筹备和资源扩容周期大幅度缩短。疫情降临之际,通过更新换代的金融级分布式外围完满支撑住了线上业务量的暴发。

入局银行业之外,SOFAStack 更在保险业界展露本领。

2018 年,蚂蚁团体对接中国人保衰弱,以一整套蕴含 mPaaS 和 SOFAStack 等技术产品在内的解决方案,帮忙这家老牌保险公司胜利冲破技术瓶颈,构建起对标行业顶尖程度的新一代外围业务零碎。

短短数月,中国人保衰弱的保单解决能力晋升数千倍,出单工夫达到每秒 1000 单,内部渠道产品接入效率晋升 6 倍,新产品上线工夫缩短 80%,平台服务可用性达到 99.99%。从前须要 4 小时能力解决完的上万单日结文件,当初只须要 6 分钟。

切入保险畛域,SOFAStack 驾轻就熟,毫无水土不服。

马振雄说,SOFAStack 之前的使命是撑持蚂蚁团体全域业务,“全域”这两个字可不是说说而已——SOFAStack 服务的对象涵盖了余额宝、蚂蚁保险、芝麻信用等一系列咱们耳熟能详的产品,整个金融行业的业务需要简直都被包融在内。

“这方面没有困扰,咱们人造原生就能够撑持金融行业的所有细分行业。”马振雄轻描淡写,背地的技术积淀重达千钧。

从初试锋芒到大展拳脚,从无人区的前哨到数字化转型的领航员,SOFAStack 从蚂蚁团体扬帆出海,联同 mPaaS 挪动开发平台、OceanBase 分布式数据库,舰队并列向前,征途上只留下航行的尾迹。

顺德农商行、深圳农商行、国泰产险、信美互相……与 SOFAStack 单干的客户名单还在一直加长。正像 2020 年那句豪情万丈的口号“分布式才是将来”那样,越来越多旅客站上月台,看分布式架构的列车逾越山海,要为这时代带来全新的改革。

汽笛声震颤破晓,人们涌入车厢,驶向将来。

将来已来

现在,SOFAStack 曾经演进到了第五代。当初那个简略的中间件框架,如今已是一个变动百出的魔盒。SOFABoot、SOFARegistry、MOSN、SOFARPC……在开源社区里,数万人为这些我的项目和组件添砖加瓦,SOFAStack 得以在更多利用场景中经受锻炼。

我问黄挺,第五代 SOFAStack 有什么求新求变的中央?

黄挺说,最大的扭转是“可信原生”,当 SOFAStack 为一个国民级利用提供服务,用户对数据隐衷、平安、可靠性的要求也会相应进步。SOFAStack 团队在突破技术边界、构建稳固框架的路上穷尽摸索,向着更加平安可信的指标进发。

要提“可信原生”,就不得不介绍“云原生”的概念。

正如这个轻灵飘逸的名字那样,云原生是一种专门针对“云上利用”而设计的办法,云上利用可能实现疾速和频繁的构建、公布、部署,在可扩展性、可用性、可移植性方面均有优良体现。此时此地,云原生技术已成为古代云计算技术的倒退潮流,越来越多企业承受和采纳了这一技术选型。

从 2018 年起,蚂蚁团体全面转向云原生技术,SOFAStack 作为其中核心技术的载体,也悄悄产生着翻天覆地的变动。

在局部技术畛域,SOFAStack 曾经走在了业界的最前沿。其中最出名的就是服务网格(Service Mesh),SOFAStack 在开源社区我的项目的根底上,倒退了本人的组件 SOFAMosn(后独立运作,并降级品牌为 MOSN),并在 2019 年的双十一大促中承当了支付宝外围链路的流量测验,是世界上最大的 Service Mesh 集群之一。

翻新的热潮开始翻涌。观潮者星散,“弄潮儿”却不肯露面。

云原生技术对旧有的技术架构带来了微小的冲击,出于对新兴技术的不信赖,业务人员和客户大多抱以张望态度。近年来,金融行业只肯把云原生技术试用于新业务,却简直没有在外围交易系统中利用的先例。

隐忧不除,难以为继。通过长时间的思考和实际,蚂蚁提出了“可信原生”的理念,它的实质非常简单:让云原生变得可信赖。

短短的“可信”两字,却波及到宏大的技术链路:无论业务方还是用户,都有对平安、稳固和可信的谋求,但这不是增强某些技术点就能够做到的,而是须要让整个零碎从硬件到利用,让所有利用从开发、部署、降级到下线的残缺生命周期,让每个用户拜访从挪动端到外围数据库的全链路——都是可信的。

作为可信原生理念的践行者,SOFAStack 正在谋求更富丽的转变。

在可靠性方面,SOFAStack 承载了历年双十一大促,三地五核心异地多活禁受了实际测验;在平安生产和数据保护等方面,可信原生中的关键技术“平安容器”和“秘密计算”,曾经退出到 SOFAStack 技术栈中。将来,SOFAStack 将通过与国内外学术机构和行业客户的钻研单干,继续加强可信原生方面的建设。

新技术带来的既是危险,也是时机。

“咱们能够利用新技术打造比以前更安全可靠的零碎,”蚂蚁团体资深技术专家王旭说,“更重要的是,咱们是否可能将‘信赖’这一有形的产品,通过咱们的技术交付给用户。”

历史真是由懒汉推动的吗?未必尽然。

然而我置信,那些依附创造新技术来“偷懒”的人,既是这个世界上最懈怠的人,也是最聪慧、最怠惰的人。

制作“中间件”的人也一样。他们把代码世界中沉重的局部做成模块,解放了宽广程序员的双手,让编译程序成为一件更加晦涩、优雅、得心应手的工作。他们懈怠,因为他们不愿承受干燥和低效的工作;他们勤奋,因为他们付出的心血并不比他人更少,而且用本人所造的工具惠及到行业内外。

趔趔趄趄一路演变至今,分布式架构的江湖群雄林立,厮杀正酣。SOFAStack 回望山头,只看见雾霭洋溢。

时代风声如潮涌,下一班列车又将到站。

退出移动版