作业:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
阿里巴巴淘宝的前后端技术方案
1.1淘宝整体架构
淘宝架构图如何剖析,从外围到内围,从左到右。外围都是用户,数据的生产者,内部是数据的消费存储者;左边都是数据处理的源头,右边到达大数据平台,是大数据的分析。经过大数据的分析,为运营和产品提供优化方向,进一步提供更好的产品、商品、活动,提高GMV、DAU等。
解决的问题:解决重复造轮子的问题。阿里巴巴曾经说过很多部门为了5%的不同,重新开发了一套系统,这导致性价比很低。技术方案:催生出了中台,中间件,微服务等公用的功能呢。共性的内容由中台,中间件处理。手段:合并相同的部门,比如聚划算App、农村淘宝App,合并进了淘宝App。
1.2 淘宝App架构
淘宝APP通过插件的方式引入各个业务模块,实现轻量级可插拔的系统。上半部分未业务部门模块,通过下面的bundle模块和基础模块组合而成,很像乐高,比如手机淘宝,聚划算,淘点点,农村淘宝等。下半部分分为:Bundle为公用的业务模块,比如商铺、购物车、商铺详情等;底层bundle为基础功能模块,比如扫码、路由、热修复等。
单个Bundle内部架构,淘宝分为多个App,比如淘宝、天猫、聚划算等。每个App的架构都是一样的,分为业务层、核心层、基础层。
APP由URLRouter来解耦各个Bundle的互相引用。比如通过路由taobao://car
可以访问到购物车模块,不管是Native还是H5都是用的同一个路由,通过参数区别调用Native还是H5,这样子就可以通过Server端下发参数的形式,或者App内部策略来实现降级(比如Native crash 连续crash2次以后,这个页面用H5打开)。并且不需要引入跟个类的头文件,通过Protocol接口的方式实现。
解决的问题:解决重复造轮子的问题。阿里巴巴有多款App,很多组件可以复用,比如购物车,订单,搜索,商品列表,商品详情,旺信聊天等。技术方案:组件复用,插件化开发。手段:框架以及壳工程(初始工程)由基础架构部门出方案,组件库由基础架构部门,或者友部门共享。
1.3 Flutter架构
Flutter为Google出品, 用Dart语言编写,实现一次编写,实现跨端运行iOS,Android。因为React-Native是通过iOS WebKit的bridge,Android的V8引擎来解析H5,最后生成纯Native代码,性能多多少少有点被诟病。Flutter解决性能问题,并且兼容Google下一代Web操作系统。所以阿里巴巴、腾旭、字节跳动都早早的入局Flutter。
解决的问题:App Native原生开发成本太高,维护成本高,开发速度慢。技术方案:Flutter 开发一次,最终是渲染为Native原生组件,iOS、Android两个平台公用一套代码。性能比较ReactNative 高。手段:通过桥接技术转换为native代码。
1.4 大前端未来
Flutter这些跨端的技术,相对还有代码维护的噩梦。比如很多老代码都是推倒重来,现在Google,Microsoft都在大力收购无代码编程公司。详情可以参考下面链接。
/low-code-development-platforms/
解决的问题:Flutter这些跨端的技术,相对还有代码维护的噩梦。比如很多老代码都是推倒重来。技术方案:更细粒度的组件化工具,通过拖拽能实现功能。手段:减少代码干预,降低犯错误的概率。
如果觉得《极客大学架构师训练营 系统架构 淘宝架构 第四次作业》对你有帮助,请点赞、收藏,并留下你的观点哦!