写点什么

极客大学架构师训练营 系统架构 淘宝架构 第四次作业

用户头像
John(易筋)
关注
发布于: 2020 年 07 月 01 日

作业:

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。


阿里巴巴淘宝的前后端技术方案

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 都在大力收购无代码编程公司。详情可以参考下面链接。

https://www.softwaretestinghelp.com/low-code-development-platforms/


  • 解决的问题:Flutter 这些跨端的技术,相对还有代码维护的噩梦。比如很多老代码都是推倒重来。

  • 技术方案:更细粒度的组件化工具,通过拖拽能实现功能。

  • 手段:减少代码干预,降低犯错误的概率。


发布于: 2020 年 07 月 01 日阅读数: 120
用户头像

John(易筋)

关注

问渠那得清如许?为有源头活水来 2018.07.17 加入

工作10+年,架构师,曾经阿里巴巴资深无线开发,汇丰银行架构师/专家。擅长架构、算法、数据结构、设计模式、iOS、Java Spring Boot。易筋为阿里巴巴花名。

评论

发布
暂无评论
极客大学架构师训练营 系统架构 淘宝架构 第四次作业