分布式能力不是功能,而是一种架构约束
网罗开发小红书、快手、视频号同名大家好我是展菲目前在上市企业从事人工智能项目研发管理工作平时热衷于分享各种编程领域的软硬技能知识以及前沿技术包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者《ESP32-C3 物联网工程开发实战》图书作者《SwiftUI 入门进阶与实战》超级个体COC上海社区主理人特约讲师大学讲师谷歌亚马逊分享嘉宾科技博主华为HDE/HDG我的博客内容涵盖广泛主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告同时也会提供产品优缺点分析、横向对比并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。展菲您的前沿技术领航员 大家好我是展菲 全网搜索“展菲”即可纵览我在各大平台的知识足迹。 公众号“Swift社区”每周定时推送干货满满的技术长文从新兴框架的剖析到运维实战的复盘助您技术进阶之路畅通无阻。 微信端添加好友“fzhanfei”与我直接交流不管是项目瓶颈的求助还是行业趋势的探讨随时畅所欲言。 最新动态2025 年 3 月 17 日快来加入技术社区一起挖掘技术的无限潜能携手迈向数字化新征程文章目录引言一、为什么很多项目用不好分布式能力典型错误二、分布式能力真正改变的是什么传统 App鸿蒙分布式三、架构上的三个强制变化1 状态必须“可同步”2 UI 不能依赖本地上下文3 任务必须可迁移四、一个典型错误案例五、分布式架构应该怎么设计推荐结构示例六、分布式带来的“约束思维”1 不再假设“本地唯一”2 不再假设“顺序执行”3 不再假设“UI 是中心”七、和 AI 架构的结合AI 关注分布式提供八、为什么说它是“架构约束”九、本质总结引言很多开发者第一次接触鸿蒙分布式能力时理解是这样的跨设备传数据 多端同步 远程调用于是大家把它当成“一个可以用的功能模块”比如需要同步数据 → 用分布式数据需要跨设备 → 调 startAbility听起来没问题。但如果你真的做过一个“跨设备可用”的鸿蒙 App很快就会发现分布式能力不是“你想用就用”而是“你必须围绕它设计”。也就是说它不是功能而是一种架构约束。一、为什么很多项目用不好分布式能力因为大多数项目一开始是这样设计的单设备思维 ↓ 开发完成 ↓ 再加分布式能力结果会出现数据不同步状态混乱页面无法恢复跨设备体验割裂典型错误// 本地状态this.currentUseruser// 想同步时再写kvStore.put(user,user)问题在于你的数据模型从一开始就不是“分布式的”。二、分布式能力真正改变的是什么很多人以为它改变的是数据同步方式但本质上它改变的是系统的“边界定义”。传统 App设备 系统边界所有东西都在一个设备 一个进程 一个状态鸿蒙分布式用户 系统边界也就是说多个设备共享一个“逻辑应用”这意味着你的应用从“单机系统”变成了“分布式系统”。三、架构上的三个强制变化这才是最关键的地方。1 状态必须“可同步”传统写法Statecount:number0只存在于当前设备。分布式设计classDistributedState{asyncset(key:string,value:any){awaitkvStore.put(key,value)}asyncget(key:string){returnawaitkvStore.get(key)}}所有核心状态必须可以被同步2 UI 不能依赖本地上下文错误写法this.deviceId// 强依赖当前设备正确思路render(state){returnstate.user}UI 应该只依赖状态而不是设备3 任务必须可迁移传统任务只能在当前设备执行分布式任务classTask{asyncexecute(deviceId?:string){if(deviceId){returnawaitremoteExecute(deviceId)}returnawaitlocalExecute()}}任务必须支持跨设备执行四、一个典型错误案例很多人会这样写aboutToAppear(){this.loadLocalData()}问题换设备 → 数据丢失正确做法aboutToAppear(){this.loadDistributedData()}甚至更进一步onPageShow(){this.stateawaitdistributedState.get(app_state)}五、分布式架构应该怎么设计推荐结构UI设备无关 ↓ State分布式 ↓ Service业务逻辑 ↓ Distributed Layer同步 / 通信示例classUserService{asyncgetUser(){returnawaitdistributedState.get(user)}}UIaboutToAppear(){this.userawaituserService.getUser()}UI 完全不关心数据来自哪个设备六、分布式带来的“约束思维”这是最重要的一点。1 不再假设“本地唯一”错误我这里就是唯一状态正确状态可能在别的设备被修改2 不再假设“顺序执行”错误A → B → C正确A / B / C 可能在不同设备执行3 不再假设“UI 是中心”传统UI 控制一切分布式状态才是中心七、和 AI 架构的结合有意思的是 分布式能力和 AI 架构是天然契合的。AI 关注任务 能力 状态分布式提供跨设备执行能力例如awaitagent.run(打开会议文档)系统可能// 平板展示文档openOnTablet()// 手机做控制bindControl()用户完全无感设备切换八、为什么说它是“架构约束”因为一旦你决定支持分布式你就必须重构状态管理重构数据流重构任务模型否则结果就是功能能跑 体验崩溃九、本质如果用一句话总结分布式能力不是“你可以用”而是“你必须围绕它设计”。对比维度传统 App分布式鸿蒙系统边界设备用户状态本地全局任务单点执行可迁移UI中心表现层总结很多开发者会把分布式能力当成一个高级功能但真正做过项目的人会发现它更像是一种“约束规则”。如果你不遵守架构会崩状态会乱体验会断但如果你从一开始就按分布式设计你会得到一个完全不同的应用跨设备 无缝体验 任务连续
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449142.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!