Archsummit 2019重磅分享|闲鱼Flutter&FaaS云端一体化架构

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 叉会儿腰,可把我厉害死了

作者:闲鱼技术-国有  

讲师介绍

国有,闲鱼架构团队负责人。在7月13号落幕的2019年Archsummit峰会上就近一年来闲鱼在Flutter&FaaS一体化项目上的探索和实践进行了分享。

传统Native+Web+服务端混合开发的挑战

随着无线,IoT的发展,5G的到来,移动研发越发向多端化发展。传统的基于Native+Web+服务端的开发方式,研发效率低下,显然已经无法适应发展需要。

我们希望探索闲鱼这样规模的独立APP的高效研发架构。主要思路是围绕Flutter解决多端问题,并使Flutter与FaaS等无服务容能力打通,形成云端一体化的研发能力,支持一云多端的发展需要。在某些场景已经取得效果,希望分享过程中的思考,与大家交流。

跨端方案Flutter与RN的对比和选择

闲鱼选择Flutter主要是出于高性能的考虑。Flutter高性能主要来源于2个原因:

  1. Dart的AOT编译能力。
  2. 自建渲染引擎,不需要转换到Native控件,避免了线程跳跃等问题。

更多比较:

没有银弹的解决方案,Flutter与RN各有优点。如何选择因素很多,关键看如何取舍,举个例子:

  • 当前团队人员以前端JS栈为主还是Native为主? 如果JS为主,写RN会更习惯。如果Android或iOS为主,写Flutter会更习惯,因为Flutter的研发工具和体验与Native更相似。
  • 动态性和复杂交互的性能,哪个更重要? 动态性重要RN合适,性能体验重要Flutter不会失望。虽然Flutter也有一些动态化解决方案,例如JS转接Flutter引擎的方案,Dart代码CodePush的方案,组件化服务端组装方案等,但这些动态方案都没有RN这样从JS层解决的这么好。
  • 是否需要IoT等多端布局?Flutter在嵌入式设计上有布局,性能有更好的表现。

Dart作为FaaS层的第一可选语言

云端技术栈的打通,是减少协同的不错的解法。以往前端+Node.js的一体化方案大家应该不会陌生,然而如果端侧使用了Flutter,那云侧Dart自然是第一选择。

FaaS的本质是运行在云端,那Dart适合用在云/Server上吗?

Dart语言早于Flutter,在最初的设计上,Dart就可以用于Web、Server。Dart具备一些服务端语言的特点:

  • 强类型,可预测性
  • GC
  • 异步和并发
  • 高性能的JIT
  • Profiler

闲鱼首先尝试将Dart作为普通的Server,替代传统的Java Server,然后再将Dart容器嵌入到FaaS容器中。建立Dart Server能力是第一步,也是主要的工作量所在。

闲鱼在Dart Server方面的建设思路:

 

开发期:

  • 受Flutter的HotReload启发,将HotReload移植到了Server侧。
  • 利用Isolate,在开发环境中为每个开发人员分配一个Isolate,解决以往的环境冲突的问题。

运行期:

  • Dart本身是单线程异步模型,并发能力需要用Isolate支持。
  • 利用Dart的Zone的特性,可以方便的实现调用链路的跟踪,方便记录Trace日志。
  • 利用Dart支持的C++ Extension能力,可以在Dart中访问支持了C++的中间件包。另外,Server Mesh也是一个重要的思路,用于解耦异构语言之间的服务调用。

一体化的更深层思考

上述内容实现了Flutter&Dart FaaS的技术栈的统一,但仅技术栈统一还远远不够,端、云的同学仍然无法真正互补和一体化打通,原因在于还有更多深入问题需要考虑:

  • 一体化的业务闭环红利如何最大化?一体化不仅是效率的提升,还使一个同学可以Cover一个云到端的业务,使业务闭环。
  • 如何消除云端技术壁垒?仅技术栈打通,端人员还是不会写云,原因在于对云的思维模式的不理解,需要真正消除云端的技术壁垒。
  • 如何使工作总量减少 ( 1+1<2 )?如果一体化后把工作量压到一个人身上,那意义不大,需要使一体化下的总工作量降低。
  • 如何促进生产关系重塑? 生产关系需要适应新的生产力。

面向这些问题,闲鱼的解法思路:

  • 业务闭环为业务开发同学带来更好的成长空间,可以完整和专注的思考业务。这是人上的核心动力。
  • 业务闭环是业务流程沉淀的方向
  • 以往的架构是云、端分开架构的,一体化后有了更多的架构下沉空间,从而带来了总工作量1+1<2的可能
  • 领域下沉和工具支撑是一体化的保证

 案例效果

案例一,一体化在资源均衡方面的体现。在近期的一个项目中,云端一体化使原本2个月的项目时间,减少了20天。

案例二,一体化在业务闭环方面的体现。负责增长的一位开发同学,专注在增长业务上,在合适的情况下为合适的人投放合适的内容,以此带来用户的增长和活跃效果。一体化的方式下,可以统一云、端的切面,业务研发不再受云、端的限制。

小结

一体化是建设高效研发框架的方向,并不是所有场景都需要一体化的开发,但一体化的Flutter、FaaS等技术组件,可以独立使用,也会带来效率提升,并且与原有的开发模式兼容。从一体化的思路去建设,可以使整体架构体系更加一致,也有机会做一体的架构沉淀。
未来闲鱼希望在一体化上做更多尝试和深入探索,包括一体化工具、一体化业务平台、数据化智能化等方向。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
8月前
|
设计模式 前端开发 测试技术
Flutter 项目架构技术指南
探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC、MVP、MVVM,如何有机结合使用,打造优秀的应用架构。
178 1
Flutter 项目架构技术指南
|
2月前
|
消息中间件 编解码 开发者
深入解析 Flutter兼容鸿蒙next全体生态的横竖屏适配与多屏协作兼容架构
本文深入探讨了 Flutter 在屏幕适配、横竖屏切换及多屏协作方面的兼容架构。介绍了 Flutter 的响应式布局、逻辑像素、方向感知、LayoutBuilder 等工具,以及如何通过 StreamBuilder 和 Provider 实现多屏数据同步。结合实际应用场景,如移动办公和教育应用,展示了 Flutter 的强大功能和灵活性。
152 6
|
2月前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
113 4
|
2月前
|
Dart UED 开发者
flutter鸿蒙版本通过底部导航栏的实现熟悉架构及语法
这篇博客详细解析了一个 Flutter 应用的完整代码,实现了带有底部导航栏的功能,允许用户在不同页面之间切换。通过逐行讲解,帮助读者理解 Flutter 的结构、状态管理和组件交互。代码涵盖了从引入包、创建主入口、定义无状态和有状态组件,到构建用户界面的全过程。希望对 Flutter 开发者有所帮助。
163 3
|
2月前
|
存储 Dart 前端开发
flutter鸿蒙版本mvvm架构思想原理
在Flutter中实现MVVM架构,旨在将UI与业务逻辑分离,提升代码可维护性和可读性。本文介绍了MVVM的整体架构,包括Model、View和ViewModel的职责,以及各文件的详细实现。通过`main.dart`、`CounterViewModel.dart`、`MyHomePage.dart`和`Model.dart`的具体代码,展示了如何使用Provider进行状态管理,实现数据绑定和响应式设计。MVVM架构的分离关注点、数据绑定和可维护性特点,使得开发更加高效和整洁。
168 3
|
3月前
|
容器
Flutter&鸿蒙next 布局架构原理详解
Flutter&鸿蒙next 布局架构原理详解
|
3月前
|
Dart UED 索引
flutter鸿蒙版本通过底部导航栏的实现熟悉架构及语法
flutter鸿蒙版本通过底部导航栏的实现熟悉架构及语法
38 2
|
3月前
|
Dart 前端开发 Android开发
Flutter的架构层
Flutter的架构层
41 1
|
5月前
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
362 1
|
6月前
|
Dart JavaScript Java
flutter 架构、渲染原理、家族
flutter 架构、渲染原理、家族
103 3

热门文章

最新文章