闲鱼技术2022年度白皮书-KUN主题-这一年,我对终端组织与技术架构的思考【专家讲技术】(下)

简介: 闲鱼技术2022年度白皮书-KUN主题-这一年,我对终端组织与技术架构的思考【专家讲技术】

接上篇:https://developer.aliyun.com/article/1225907?spm=a2c6h.13148508.setting.31.595d4f0eudDbz0



四、 终端容器KUN,助力闲鱼再出发

 

image.png


以上的未来研发模式的构想部分的内容在闲鱼已经有了较好的基础,一方面我们的Flutter技术在业务落地侧的占比远高于目前市面上同等体量的App,这样的业务规模和技术落地规模让我们有机会验证在较为复杂的C端场景下基于Flutter技术的容器化解决方案是否有机会走通,随着团队对Flutter技术的理解和沉淀不断提升,在大量体验场景下的富交互细节以及操作系统升级带来的兼容性挑战正在持续被解决和优化,另一方面闲鱼在推进落地一周一版的研发模式的过程中目前通过新的客户端研发平台完成了发版流程的全面数字化和部分场景的技术自动化落地。以研发流程为例,我们力求将核心的90%的协作通过线上审批流、钉钉机器人通知,自动化的版本邮件来完成,让整个过程可观测和回溯,同时在构建集成、回归验证和版本放量等能力上通过跟自动化能力结合加速交付效能的提升。

 

然而在目前的布局下,闲鱼客户端基于Flutter容器化的基础架构以及一周一版的发布模型,在未来依然有较大的困难需要突破:一方面客户端的人员规模增长速度和生态演进速度在应用层这一侧都显然不如前端,在未来的快速迭代能力侧难以进一步突破以应对不确定的未来,另一方面作为C端产品又要求体验必须对齐原生,基础链路侧的富交互体验会持续存在,这在前端角度又是极大的成本。从这两个角度来思考,我们的终端容器需要进一步升级迭代。它应该海纳百川容纳更大的研发生态,让前端&客户端的生态为我所用,在需要体验的时候进行更轻量级的能力扩展,如直接引入通过Flutter研发的客户端组件,在需要迭代时发挥前端的作用,如研发期的迭代速度,发布期在合规的要求下具备业务线上的快速迭代的能力。

 

因此从2021年下半年开始,我们的KUN项目应运而生,简单描述KUN的定义,KUN是基于W3C标准子集&Flutter打造的高扩展性、高性能跨端渲染引擎。KUN的目标是通过提供一套统一的容器覆盖端内全部的业务场景来解决端内多套容器带来研发效能低下、业务代码复用难、不同场景叠加带来的性能水位差的问题。为帮助大家理解我这里增加一张KUN与其他类似框架的架构对比图。

 

image.png


 

KUN具备以下关键特点

 

高扩展性

 

针对富交互场景以及高性能场景,Kun提供低成本的扩展机制,将FlutterWidget映射为上层可使用的自定义组件,过程中提供较为方便的文档生成工具给上层开发使用。同样,在W3C标准中,KUN也通过微内核的设计方案将W3C的核心Tag注册入KUN的内核当中。

 

高扩展性的核心目标是通过复用闲鱼4年来在Flutter侧大量的上层交互控件解决线上产品的交互体验和性能问题。高扩展性也是KUN的最核心特点,后续围绕Flutter生态,后续闲鱼有机会孵化出类似FishDesign的组件库生态。

 

面向W3C标准

 

上层应用开发通过JS/TS开发,并提供面向W3C子集的标准,这也意味着您可以通过React/Rax等框架进行上层开发。这部分目前跟常见的跨端框架的原理基本一致,在整体设计上也参考了业内主流的跨端框架,在标准的支持上,我们目前更多关注闲鱼侧业务较长使用的能力,由于扩展能力是我们的第一选择,因此在未来更多KUN使用的场景,我们会倾向于使用闲鱼内部的高性能自定义组件,这也意味着我们的这部分能力较薄。

 

高性能&多端一致性

 

通过Flutter引擎以及Flutter相关组件生态为整个渲染引擎提供高性能交付产物。底层的整体渲染基于FlutterWidget,保证了多端的一致性和容器复用。这部分的特性完全来源于Flutter的基础能力,这里不再赘述。唯一需要关注的是,当整个应用复用Flutter容器时,在内存水位和加载性能侧以及组件开发成本上来看,显著好于混合了多个容器如Flutter+Weex+WebView的性能。这部分的优势完全来自于整个App架构的简洁。

 

image.png


为方便大家理解,这里也补充一张扩展组件的核心描述,可以看到更多时候我们会在产品链路上使用混合模式进行开发,保证关键细节的体验与原生一致,而在基础组件的描述上我们更倾向于直接使用W3C的标准。

 

KUN项目较好的打通了现有的前端生态和Flutter生态,并通过配套工具进一步减少开发的门槛,使得具备JS/TS/Dart开发能力的终端工程师有机会在闲鱼诞生,这类工程师可以在性能敏感型和动态性敏感型的不同场景下选择不同的技术实施方案做业务落地,使得终端岗位独立完成端侧需求这件事情得以成立。目前我们已在导购场景和我发布的等场景下完成了前期的技术落地。后续会针对复杂场景如闲鱼号等业务进行改造和落地,通过技术的革新为业务带来效能的变化,为用户带来更好的产品体验。未来的几个月,我们会针对目前产出的一些关键能力和部分技术细节做系列性的总结和分享,在完成大规模的业务验证和技术优化后,我们将面向社区进行开源。

 

五、 后记

 

写这篇文章的最后,写一点自己的碎碎念。

 

首先要表达一些对行业内同事和朋友的感谢,比如文中提到的MXFlutter,是较早进行Flutter侧动态化方案落地的开源项目,早在我自己做GMTC出品人时跟该项目负责人有所交流,在KUN的设计的前期调研中也有了解过MXFlutter的一些使用方式和落地情况。这里另外要感谢的是Kraken团队,KUN的整个项目落地过程中得到了Kraken团队较多的支持,在技术交流和讨论中也让KUN的定位和路径更明确,两个团队也做了大量的代码实现的讨论和交流,得益于Kraken的开放性,KUN在这个过程中站在巨人的肩膀上继续演进。

 

这里插播一个彩蛋,KUN的名字本身就是对Kraken项目的一个致敬,大家可以猜一猜原因。未来KUN也希望最终能青出于蓝而胜于蓝,并把代码回馈给社区,在前期的建设中我们会先以集团内部开源作为目标,并在未来面向社会开源,为行业技术生态建设提供一些力所能及的帮助。

 

另外想讲下我看到的行业差距和不足。在了解整个国外行业对我所定义的终端岗位的情况来看,硅谷的头部公司工程侧的人才结构已经发生了一些变化,工程侧的人才更多面向全栈和终端全栈的方向去走,原因是海外的工程基建能力更发达和完备,这也意味着海外的技术组织通过技术能力和组织岗位的重新整合,达到了更好的生产效率。

 

近几年国内也开始更加强调组织的持续演进和工程师素养的提升,比如提出了DevOps的概念,减少运维参与,在云原生的大环境下降低开发和运维门槛。提出了测试开发的概念,推进研发的自测和持续集成自动化能力的建设。提出卓越工程的概念,更加强调软件架构和研发基础设施的重要性。但这些变化始终是跟随硅谷的步伐。作为国内的头部的互联网企业的一员,我也希望国内的技术人能在不确定的大环境下练好内功,通过持续的自我革新来形成企业的技术壁垒,正视我们与国际互联网公司之间的技术和基建上的差异,先追平能力,再找到机会持续超越,真正能为技术创造新商业提供一些微小的帮助。

 

日拱一卒无有尽,功不唐捐终入海。未来星辰大海的道路上,闲鱼技术与你一起乘风破浪。

 

参考资料

【1】2021年互联网行业挑战与机遇白皮书

【2】北海,高性能Web渲染引擎,基于Flutter构建

【3】MXFlutter是一套使用TypeScript/JavaScript来开发Flutter应用的框架。

相关文章
|
2月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
3月前
|
数据采集 监控 JavaScript
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。
656 33
|
2月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
2月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
391 2
|
3月前
|
Cloud Native API 开发者
Gemini 2.5 Flash 技术拆解:从 MoE 架构到阿里云生态落地指南
2025年9月,谷歌Gemini 2.5 Flash发布,性能提升5%、成本降24%,引发行业关注。其MoE架构、百万上下文与“思考”范式,助力阿里云开发者高效构建云原生应用。本文解析技术内核,结合汽车、物流等案例,提供落地指南与避坑建议,展望大模型与流计算融合前景。
528 6
|
2月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。