标准微前端架构在蚂蚁的落地实践

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

摘要:蚂蚁金服前端技术专家有知在D2带来以“标准微前端架构在蚂蚁的落地实践”为题的演讲。首先提出了微前端的场景域在蚂蚁落地时常遇到的问题,然后详细介绍了微前端的定义,最后通过实施一个标准的微前端架构,提出面临的技术决策以及需要处理的技术细节,经过在蚂蚁的实践证明,微前端是一个具有优势的方案。

在选择一个微前端方案之前,常常需要思考这样一个问题,我们为什么需要微前端。通常对微前端的诉求有两个方面,一是工程上的价值,二是产品上的价值。

对于工程上的价值,可以从一个三年陈的项目来看,如上图所示,左上角commit的记录显示,第一次提交是2016年8月。它的下面是一个codebase代码,中间是基本的依赖树dependencies,右侧为打包的体积。

对于产品体验上的问题,例如上图所示,要完成一个跳多个控制台任务,在过程中发现每个控制台视觉不统一、流程出现断点以及重复加载或认证的问题导致整个产品的体验较差。

上图是来自MicroFrontends网站对微前端的定义。意思是所谓微前端就是一种多个团队之间可以使用不同技术构建一个现代化web的技术手段以及方法策略。其中的关键字是多团队、采用不同的技术栈以及现代化的web。

微前端的思路是继承自微服务的思想,如上图所示。

上图所示为微前端的架构图,其中上层为统一共享的拼接层,主要做一些基础信息的加载,和对来自不同团队不同技术栈的客户端在运行时动态组成一个完整的SPA应用,以及生命周期的调度和事件的管理。总之,微前端是将微服务概念做了一个很好的延伸和实现。

按架构类型区分,常规web应用的架构类型分为两种,一种是MPA,另一种是SPA。如上图所示为2017年各云产品控制台架构调研,除了googlecloud之外,大部分的云厂商都使用MPA架构。MPA的优点在于部署简单,具备独立开发和独立部署的特性。但是,它的缺点是完成一个任务要跳到多个控制台,并且每个控制台又是重复刷新的。而SPA能极大保证多个任务之间串联的流畅性,但问题是通常一个SPA是一个技术栈的应用,很难共存多个技术栈方案的选型。SPA和MPA都是微前端方案的基础选型,但是也都存在各自的问题。

按运行时特性区分,微前端包含两个类别,一类是单实例,另一类是多实例。单实例场景如上图中左侧,通常是一个页面级别的组合,例如一个运行时只有一个App被激活。多实例场景如上图右侧,像一个组件或者是容器级别的应用,运行时可以做到多个应用被同时激活。这两种模式都有自己适应的场景和优势。微前端架构的核心诉求是实现能支持自由组合的微前端架构,将其他的SPA应用以及其他组件级别的应用自由的组合到平台中。那么,如何选择SPA和MPA以及单实例和多实例是一个问题,我们是否能探索出一种方案,将SPA和MPA工程上的特点结合起来,同时兼顾多实例和单实例运行时的场景来实现。

为了实现上述的方案,在技术细节上的决策需要注意以下问题:

一是如何做到子应用之间的技术无关;

二是如何设计路由和应用导入;

三是如何做到应用隔离;

四是基础应用之间资源的处理以及跨应用间通信的选择。

对于如何做到子应用之间的技术无关问题,我们是通过协议来解决的。如上图所示的方式,就可以完成子应用的导入。如果子应用接入时做了一些框架上的耦合或者依赖一个具体实现库的机制,就一定会存在与实现库版本耦合的可能,不利于整个微前端生态的统一和融合。

如上图所示是一个不与某个具体框架实现耦合的例子。

对于路由的问题,如上图所示。这样一条访问链路后,刷新当前URL通常情况下会发生什么?正常访问一个站点,经过一番操作之后,进入到站点的列表页,路由会变大很复杂,但如果是一个微前端用户,刷新一下页面会出现404的情况。解决思路是将404路由fallback到一个异步注册的子应用路由机制上。

对于应用导入方式的选择,比较常见的方案是ConfigEntry,如上图所示。通过在主应用中注册子应用依赖哪些JS。这种方案一目了然,但是最大的问题是ConfigEntry的方式很难描述出一个子应用真实的应用数据信息。真实的子应用会有一些title信息,依赖容器ID节点信息,渲染时会依赖节点做渲染,如果只配JS和CSS,那么很多信息是会丢失的,有可能会导致间接上的依赖。

另外一种方案是HTMLEntry,如上图所示,直接配html,因为html本身就是一个完整的应用的manifest,包含依赖的信息。HTMLEntry的优点是接入应用的信息可以得到完整的保留,接入应用地址只需配一次,子应用的原始开发模式得到完整保留,因为子应用接入只需要告知主应用html在哪,包括在不接入主应用时独立的打开。它的缺点是将解析的消耗留给了运行时。而ConfigEntry相较于HTMLEntry减少了运行时的解析消耗。ConfigEntry的缺点是主应用需配置完整的子应用信息,包含初始DOM信息、js/css资源地址等。

对于样式隔离问题,例如BEM,每个子应用在写样式之前要加一些前缀,做一些隔离,但是这个做法并不推荐。相对而言,CSSModule更简单高效,也更智能化,是比较推荐的方式,但是也存在着问题。而WebComponents看上去很不错,但在实践过程中也会发生一些问题。

例如在WebComponents渲染的流程中出现了问题,如上图所示。

解决方案为上图所示。在antd中提供了全局的API,可以提前设置好所有的弹框的container,但是也不是每个组件库都能像antd一样完成度那么高。

蚂蚁所采用的解决方案是做动态的加载和卸载样式表,如上图所示,这种方案是很有效的。

对于JS隔离,蚂蚁提出了JSSandbox机制,如上图所示,其中bootstrap、mount及unmount生命周期是子应用需要暴露出来的,因为子应用的整个生命周期都是被主应用所管理的,所以可以在主应用中给子应用插入各种拦截的机制,也可以捕获到子应用在加载期间做了哪些全局上的修改。在unmount时,可以将全局上的副作用全部手动移除掉,同时也可以实现在重新进来时,将上次忘记卸载的副作用重建一遍,因为需要保证下次进来时能完整回复到与上次一致的上下文。

对于资源加载问题,在微前端方案中存在一个典型的问题,如果子应用比较多,就会存在之间重复依赖的场景。解决方案是在主应用中主动的依赖基础框架,然后子应用保守的将基础的依赖处理掉,但是,这个机制里存在一个问题,如果子应用中既有react15又有react16,这时主应用该如何做?蚂蚁的方案是在主应用中维护一个语义化版本的映射表,在运行时分析当前的子应用,最后可以决定真实运行时真正的消费到哪一个基础框架的版本,可以实现真正运行时的依赖系统,也能解决子应用多版本共存时依赖去从的问题,能确保最大程度的依赖复用。

对于应用之间数据共享及通信的问题,蚂蚁提出了两个原则,第一个原则是基于props以单向数据流的方式传递给子应用。第二个原则是基于浏览器原生事件做跨业务之间的通信。

在真实的生产实践中,蚂蚁总结出了几点经验及建议:兄弟节点间通信以主应用作为消息总线,不建议自己封装的Pub/Sub机制,也不推荐直接基于某一状态管理库做数据通信。

上图所示为蚂蚁在实践中做的性能优化,包括异步样式导致闪烁问题的解决以及预加载问题的解决。

在蚂蚁金服做了大量关于微前端方案之后,总结了衡量一个微前端方案是否友好的两个标准,第一个标准是技术无关,也是微前端最核心的特性,不论是子应用还是主应用都应该做到框架不感知。第二个标准是接入友好,子应用接入应该像接入一个iframe一样轻松自然。

蚂蚁内部基于微前端基础架构提出了一体化上云解决方案,称为OneX,是一个基础的平台,它可以将各种流程和工具串联,其价值体现在品牌、产品和技术方面。

品牌价值指的是统一的界面框架、UI、交互形成了蚂蚁金服科技品牌心智。

上图所示为蚂蚁的一个真实应用的例子,除了中间接入的产品是自己控制之外,其他内容都是由平台提供,这样,如论是一个三年陈项目还是新做的项目,在基本的视觉上可以做到统一。

产品价值指的是产品具有自由组合能力。之前的产品是多个产品、多个站点的控制台,而现在只需要一个控制台,将多个产品自由的组合,这样,可以在商业上有更多的相应空间以及更多自由的搭配。基于这样的系统也可以做一些全局性的事情,例如埋点、用户的转化跟踪业务。

技术价值指的是研发上的提效。经过微前端的改造后,蚂蚁可以将大型的系统解耦成可以独立开发的并行的小型的系统,这些小型系统可以交给别的团队或者使用可视化的系统去实现,最后在运行时只需要将他们集成起来。

在技术价值方面也可以实现交付上的提效,只需要在某一个环境的任意一个环境中做平台上的接入,应用就可以做到在多余的环境中不改代码,直接运行。

上图所示为阿里云刚上市的一个产品例子,其中包括15个来自不同团队的应用进行维护,它的特点是并不是单独为阿里云而设计的,之前在蚂蚁也有运行,只不过在阿里云中做了动态的组合。OneTour微应用组件主要解决的是在多个产品控制台之间自由切换导致流程割裂的问题。

蚂蚁微前端的落地成果包括:有70+线上应用接入(阿里云+蚂蚁云+专有云),最复杂一个控制台同时集成15个应用,并且有4+不同技术栈,以及开发到发布上线全链路的自动化支持,一云入驻多云运行。

THE END
1.会员登录1.进入蚂蚁云官网首页,点击右上角上角“请登录”,跳出如下登录页面。 1.填写注册手机号或者已认证邮箱、密码。 2.登录成功,进入到用户中心首页。 注:会员登录密码输入错误次数超过8次,将会被自动锁定20分钟,如果您忘记登录密码,建议您选择“忘记密码”重新设置会员账号密码。 https://www.ant-cloud.net/help/article/456.html
2.蚂蚁金服云服务器怎么设置中文输入法随着云计算的快速发展,蚂蚁金服云服务器作为一款高性能、高可靠性的云计算平台,受到了越来越多企业的青睐。在使用云服务器进行日常工作时,中文输入法是必不可少的工具。本文将详细介绍如何在蚂蚁金服云服务器上设置中文输入法,帮助用户更高效地操作。 一、选择合适的中文输入法软件 ...http://www.bidal.cn/n818096.htm
3.云蚂蚁计费管理软件一台电脑计费云蚂蚁计费管理软件 是一款智能化线上管理系统,适用于大中小型网吧,酒店式公寓,学校宿舍,游戏机,商城超市等场所,不需要服务端,一部手机即可管理所有机器,打破局域网限制,随时随地皆可设置。手机查账便捷迅速,管理设置套餐,手机自助扫码上下机,实现无人值守,节省人工成本。 http://u7pk.cn/zhuanti/yunka/yunka.html
4.蚂蚁云创数字科技(北京)有限公司招聘信息同意猎聘《猎聘用户服务协议》及《个人信息保护政策》 蚂蚁云创数字科技(北京)有限公司位于北京市海淀区魏公村路6号院1号楼15层2单元1502室,注册资本为3000.00万人民币,成立于2015-01-15,目前公司的主要经营范围是一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;软件开发;计算机系统服务;数据处...https://www.liepin.com/company/gs24392575/
5.Leanote蚂蚁云笔记软件下载Leanote蚂蚁云笔记是一款免费的开源云笔记软件,集成了知识管理、博客公开、笔记分享和协作同步等诸多功能为一体,并采用了Go的Web框架revel和MongoDB开发完成,能够支持Markdown语法、支持代码高亮、支持笔记分享协作和附件上传、笔记记录等功能,用户可直接通过输入代码运行Leanote的各项功能,是非常适合程序员之间交流合作的云...https://www.32r.com/soft/201508271676.html
1.baike.pinpaidadao.com/index.php?article/1634722X-CLOSE X-CLOSEhttp://baike.pinpaidadao.com/index.php?article/1634722
2.华为云安全返佣:云计算时代的营销新玩法帮助中心在云计算时代,企业对于IT资源的需求日益增加,而选择合适的云服务提供商成为了企业成功的关键因素之一。华为云凭借其强大的技术实力和丰富的服务种类,已经成为了众多企业的首选。为了进一步扩大市场份额并提高客户满意度,华为云推出了云安全返佣计划。 特点概述 https://www.cqhwr.com/help/485620.html
3.华为云11.11OA上云解决方案一手评测,省时省钱更省心泛微e-cology为中大型组织创建全新的高效协同办公环境。标准化产品+个性化开发,供集团型组织使用,且可基于鲲鹏云服务器进行部署。 上面是泛微e-cology几种版本,根据企业的不同需求,可选择e-cology基础版、e-cology标准版、e-cology政务版、e-cology信创版、用户扩容基础版、用户扩容高级版等不同版本。泛微e-cology配...https://www.csdn.net/article/2024-11-08/143619063
4.历史上的11月14日云盘账号密码共享深度解析与测评报告随着数字化时代的到来,云存储服务已成为现代人生活中不可或缺的一部分,本文将对“历史上的11月14日最新云盘账号密码共享”进行全面评测,介绍其特性、使用体验、与竞品对比以及优缺点分析,并对目标用户群体进行深入探讨,这款云盘产品以其高效的文件存储、共享和管理功能,为用户提供了一个便捷的数据存储平台。 http://www.beixianhua.com/post/355.html
5.微信运营方案范文8篇(全文)微信商城是用户直接可以在通过关注云蚂蚁云销平台微信在微信上直接进行浏览商品、购买等行为的商城。完善微信商城的搭建,包括:商城商品展示(商品信息)、会员登录、商品购买流程、会员中心、退货申请、商品评价、物流查询、会员积分、优惠券领取、pc端商城数据对接等。(注:此功能可以暂缓开发,先完善一些基础功能)...https://www.99xueshu.com/w/filernp41eng.html
6.云蚂蚁计费管理软件下载云蚂蚁计费管理软件官方版下载《云蚂蚁计费管理软件》这是一款用于网吧的计费管理软件,这个软件会很直白显示出终端总数和每天的收益,是管理网吧的好帮手,有需要的用户不要错过。 软件特色 1. 不需要管理端,手机直接管理,随时随地查看终端上座率和收益,老板直接躺赚。 2.不需要局域网,只要机器能联网就可以。 https://soft.3dmgame.com/down/196549.html
7.蚂蚁云高防服务器随着互联网的快速发展,云计算已经成为企业和个人获取数据存储和计算资源的重要途径。然而,云计算环境中的安全问题也日益凸显,黑客攻击、DDoS攻击等安全事件时有发生。为了保障用户数据和应用的安全,蚂蚁云推出了高防服务器,帮助企业构建安全稳定的云计算环境。>https://www.huishikong.com/default/1214021.html
8.蚂蚁云原生开放协同技术探索与实践的总结和综述蚂蚁云系统阿里巴巴以及支付宝(就是后来的蚂蚁金服),绝大部分的业务代码都是Java编写的。在Java20岁生日这年,我们用这篇文章记录蚂蚁金服内部,在金融云环境下Java系统的Profiling和Debugging经验与实践,与大家分享交流,有非常特别的意义。希望读者能够从中借鉴到一些解决问题的思路。https://blog.51cto.com/u_16099239/11346781
9.「蚂蚁云招聘」蚂蚁云怎么样?蚂蚁云致力于为客户提供最可靠、最安全、高扩展性和节约成本的应用解决方案。 我们的专业团队为您的互联网或者移动互联网业务快速独身定制应用,提供开发级的监控和24x7小时全天候技术支持。我们的服务包括需求描述、开发规划(系统架构设计,软件开发和全天候的管理),云计算和系统咨询。我们提供服务,帮助我们的用户控制...https://maimai.cn/brand/home/l8109qQi
10.详细介绍蚂蚁云本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领文档描述 详细介绍蚂蚁云蚂蚁云一一为2.6亿蓝领,700万家制造企业,200万家劳务中介,打造中国最大的蓝领职业 发展和生活平台。同时蚂蚁云还是天然蓝领生态云平台,蓝领产业大数据平台,是B2B2C +020闭环平台,是全业务链互联网+平台。蚂蚁云秉承...https://m.renrendoc.com/paper/203347463.html
11.蚂蚁云学蚂蚁云学 平台握掌间 学习在指尖 一站式云学习企业培训平台,让培训更轻松, 一站式智慧云学习 多纬度系统化管理 全方位优质体验http://www.anttrain.cn/
12.蚂蚁云创数字科技(北京)有限公司如何?蚂蚁云创数字科技(北京)有限公司如何? 想问下: 1. 这家公司怎么样? 2. 这是蚂蚁集团下属子公司吧? 4. 升职和加薪如何? 5. 会有蚂蚁集团的分红吗? 6. 大家有什么想说的和想分享的吗? 7. 工作前景应该不错吧,感觉支付宝挺稳的。 8. 能解决北京户口吗?https://m.nowcoder.com/feed/main/detail/9ff5b1cd3e0e41afa7a39987fbd8bc11
13.蚂蚁云科技集团股份有限公司工资待遇怎么样?薪酬福利加班情况...厦门蚂蚁云科技有限公司 企业服务 光电 烘焙 智能语音 用户画像 PK 浏览(3673次) 少于50人 国家无线电频谱管理研究所有限公司 系统集成 通信软件 通信设备 综合布线 PK 职位(3) 工资(¥7.0K) 浏览(2.1万次) 100-499人 西安阳易信息技术有限公司 智能制造 PK 工资(¥21.7K) 浏览(2333次) 50...https://m.jobui.com/company/19008370/salary/
14.蚂蚁微云橙云阿里云百度云腾讯云 云虚拟主机 虚拟主机香港云 邮件营销 邮件营销短信营销 多种营销推广必备利器,推广快,效果好, 成本低,客户主动找上门; ...集合多种询盘工具,商机一个不遗漏。客户留咨短信免费送达,双向短信通知(询盘用户和商家)在线客服实时接待,手机端一键拨号 不限点击次数 不惧超预算 ...http://zxy13408381254.51hostonline.com/