我是靠谱客的博主 沉默长颈鹿,最近开发中收集的这篇文章主要介绍闲鱼架构如何一招提效30%?Flutter+Serverless 研发实践公开研发架构的演进云端一体化技术方案下单页一体化实践收益与效果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

点击这里,查看具体收益与效果等更多重要内容

简介:Serverless(无服务架构)被誉为下一代云计算,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。闲鱼客户端基于Flutter进行架构演进与创新,通过Flutter统一Android和iOS双端提升研发效能之后,希望通过Flutter+Serverless 解决各角色间存在大量的协同,导致整体研发效率低,移动端离业务越来越远,服务端没有时间做底层领域沉淀的问题,从而进一步提升整体研发效率。

研发架构的演进

接下来我们带着这里两个问题回顾前后端研发架构演进的历史。

在这里插入图片描述PC互联网早期没有还没有前后端的概念,此阶段单个业务需求通常一个开发人员可以完成研发,前端网页与后端逻辑都写在一个工程中。随着业务越来越复杂,原本开发者负责前后端研发已经变得效率低下,此阶段随着移动互联网的爆发,服务端需要服务与PC、Android、iOS等多种前端。

服务端总是有一个疑问:服务端设计接口时,是应该面向 UI,还是应该面向通用服务?一个方案是抽取一部分服务端做 BFF(Backend For Frontend服务于前端的后端),作为前后端之间的适配层,核心是解决数据的聚合与编排,重新探索更合理的分层协作模式。

服务端写BFF带来新的问题,总是包接口无法提升个人能力。如果BFF由端侧同学开发可以解决这个问题,具体技术方案也是接下来我们要思考的问题。

云端一体化技术方案

在这里插入图片描述

Serverless 由 BaaS(Backend as a Sevice)与 FaaS(Function as a Service)两部分组成。BaaS 主要包括数据库存储、消息队列等能力,针对复杂的需求建议由服务端在 BaaS 层封装领域服务供 FaaS 层使用。作为端侧开发,核心关注客户端与FaaS层的代码开发。

目前公司 FaaS 环境已经支持 Java、Kotlin、Swift、Dart、Node.js 等多种语言与框架,闲鱼通过 Android(Flutter)、iOS(Flutter)、FaaS(Dart Runtime)都使用Dart 达到语言一体,并且实现协议一体与工程一体。

语言一体:Android、iOS、FaaS层使用 Dart 语言开发,实现三端语言统一,有效屏蔽FaaS层语言学习成本。

协议一体:通过一体化框架屏蔽通信细节,前后端同一份State,减少协议转换,前端同学调用FaaS服务时,如同调用本地函数一样简洁。

工程一体:前后端可以在同一个工程中进行开发,利用Dart特性可以通过Hot Reload机制进行快速开发联调。

下单页一体化实践

下面以闲鱼下单页一体化为例,通过页面渲染与交互两部分展开一体化实践过程。

在这里插入图片描述

下单渲染一体化

从上图左侧可以看出,客户端渲染此页面需要在端侧请求5个接口,处理渲染接口之间的逻辑,把接口返回的Data转为为ViewModel。经过一体化改造之后,原有在端侧的逻辑都移到FaaS层,包括聚合5个领域服务,处理业务逻辑,进行字段映射与页面编排,端侧无任何渲染与业务逻辑,直接获取返回的ViewModel刷新页面。以下是云端一体之后的流程图。

在这里插入图片描述

下单页交互操作一体化

从上图右侧可以看出,有4种操作都会改变实付款,原本这些操作处理逻辑都在端侧处理,一体化改造之后,端侧不存在任何计算逻辑,客户端每次操作都会请求服务端,有FaaS进行红包是否过期等数据校验,再返回页面数据进行刷新。

一体化研发框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAmLr7Kh-1578033494321)(https://ucc.alicdn.com/pic/developer-ecology/bdcbc01b1f0c46a985cecae35892ff89.jpg "1201.jpg")]

Nexus Framework:基于Flutter的一体化移动端UI框架。
Logic Engine:基于Flutter的一体化通信与调度框架。
Nexus Server:基于Dart Runtime的一体化服务端框架。

代码示例

下图为客户端下单页初始化的代码示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKTcrDDH-1578033494322)(https://ucc.alicdn.com/pic/developer-ecology/af64df6c257a48f9b70fb664c3303ae0.jpg "1206.jpg")]

下图为FaaS层对客户端发起的初始化请求的处理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GE13h0dh-1578033494323)(https://ucc.alicdn.com/pic/developer-ecology/e29fea0c9cc04cf0b1f2edc2beb1268b.jpg "1207.jpg")]

以上是Flutter+FaaS双端协议一体的开发示例,双端都是通过BinderAction进行交互,Action中的State是同一个类型,从而有效屏蔽通信细节,提高研发效率。

收益与效果

关键字:Dart 前端开发 JavaScript Java Serverless 测试技术 调度 Android开发 iOS开发 Kotlin

最后

以上就是沉默长颈鹿为你收集整理的闲鱼架构如何一招提效30%?Flutter+Serverless 研发实践公开研发架构的演进云端一体化技术方案下单页一体化实践收益与效果的全部内容,希望文章能够帮你解决闲鱼架构如何一招提效30%?Flutter+Serverless 研发实践公开研发架构的演进云端一体化技术方案下单页一体化实践收益与效果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部