位置:编程技术网 > 物联网 > 正文 >

闲鱼Flutter&FaaS云端一体化架构

2019年07月23日 11:57来源:未知手机版

剪切板怎么打开,云南巧家,蜜蜂的资料

讲师介绍国有,闲鱼架构团队负责人。在7月13号落幕的2019年Archsummit峰会上就近一年来闲鱼在Flutter FaaS一体化项目上的探索和实践进行了分享。传统Native+Web+服务端混合开发的挑战随着无线,IoT的发展,5G的到来,移动研发越发向多端化发展。传统的基于Native+Web+服务端的开发方式,研发效率低下,显然已经无法适应发展需要。我们希望探索闲鱼这样规模的独立APP的高效研发架构。主要思路是围绕Flutter解决多端问题,并使Flutter与FaaS等无服务容能力打通,形成云端一体化的研发能力,支持一云多端的发展需要。在某些场景已经取得效果,希望分享过程中的思考,与大家交流。
>跨端方案Flutter与RN的对比和选择闲鱼选择Flutter主要是出于高性能的考虑。Flutter高性能主要来源于2个原因:
Dart的AOT编译能力。
自建渲染引擎,不需要转换到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一个云到端的业务,使业务闭环。
如何消除云端技术壁垒?仅技术栈打通,端人员还是不会写云,原因在于对云的思维模式的不理解,需要真正消除云端的技术壁垒。

本文地址:http://www.reviewcode.cn/wulianwang/59801.html 转载请注明出处!

今日热点资讯