【OpenHarmony/HarmonyOs 】从本地 MVP 到云同步:AGC Serverless 架构演进方案
【OpenHarmony/HarmonyOs 】从本地 MVP 到云同步AGC Serverless 架构演进方案前言LinkOS 链界目前以 Preferences 保存身份、设置和自定义网址优点是离线可用、实现快速。但当用户希望手机、平板和 2in1 设备共享收藏时就需要账号、云数据库、云函数和文件存储。本文给出一条从本地 MVP 平滑演进到 AGC Serverless 的设计路线。☁️说明本文是基于现有项目结构的演进方案。仓库已经预留 AGC 配置位置但 Cloud DB、Auth 和 Cloud Functions 尚未完成真实接入。一、为什么选择 Serverless对于个人导航和入口管理应用自建服务器意味着域名、证书、部署、扩容、数据库备份和安全补丁。AGC Serverless 可以把常见能力拆开Auth Service用户身份Cloud DB结构化数据与多端同步Cloud FunctionsAI 转发、校验和业务逻辑Cloud Storage用户壁纸与图标Remote Config预置站点与功能开关。Serverless 不等于“没有后端”而是不用自己维护服务器进程。数据规则、鉴权、限流和错误恢复仍然必须设计。二、本地数据与云数据如何分工建议将数据按性质划分数据本地云端当前身份、主题、语言Preferences 缓存可选同步自定义网址RDB 本地副本Cloud DB 主同步源图标与壁纸本地缓存Cloud StorageAI 密钥禁止保存Cloud Function 环境变量角色预置应用内置兜底Remote Config 动态版本应用应保持“离线优先”先从本地数据库渲染再后台拉取云端变更。网络不可用不应让首页变成空白。三、云端网址模型现有UrlItem已经包含同步所需的基础字段interface UrlItem {id:string; title:string; url:string; icon?:string; categoryId:string;sort:number; createdAt:number; updatedAt:number; }接入云端后建议增加interfaceCloudUrlItemextendsUrlItem{ ownerId:string; deletedAt?: number; deviceId:string; version: number; }ownerId用于数据隔离deletedAt支持删除墓碑同步version或服务端更新时间用于冲突判断。直接物理删除会让离线设备不知道某条数据已被删掉。四、同步状态机一条本地修改可以经历以下状态LOCAL_DIRTY →SYNCING→SYNCED↘ FAILED → 等待重试新增、编辑和删除先写本地并标记 DIRTYUI 立即更新同步任务在网络可用时批量上传。成功后记录云版本失败则指数退避。这样用户操作不依赖网络往返。五、冲突解决不能只看“谁最后上传”最简单的 Last Write Wins 会丢失另一个设备的修改。网址模型可以按字段或场景定义规则标题与 URL使用更新时间较新的版本排序使用独立排序版本避免编辑标题覆盖顺序删除墓碑通常优先防止已删除记录复活图标上传成功后再提交新资源地址无法自动合并时保留冲突副本让用户选择。所有时间比较应尽量使用服务端时间不能完全信任设备时钟。六、账号与数据隔离每条云记录都必须绑定已认证用户 ID查询和写入规则同时校验ownerId。客户端传来的 ownerId 不能直接信任云函数应从认证上下文得到真实用户身份。游客模式可继续使用本地数据。用户首次登录时需要决定将本地收藏合并进云端使用云端覆盖本地检测重复 URL 后合并并保留最近编辑。这个流程最好给用户明确预览避免一次登录导致收藏消失。七、AI 请求通过 Cloud Function 中转客户端问题 ↓ AuthToken云函数鉴权 → 限流 → 内容校验 → 调用 AI ↓ 清洗后的结果 客户端渲染云函数应设置单用户频率、每日配额、最大输入长度、模型超时和追踪 ID。第三方 API Key 只放服务端机密配置不进入仓库、不写入agconnect-services.json也不返回客户端。八、AGC 配置与签名项目包名必须与 AGC 控制台完全一致。平台导出的agconnect-services.json放在约定的 rawfile 目录真实配置不应随意公开。真机调试还需要正确导入证书、密钥库和 Profile。接入时建议按小步验证先确认签名和真机安装再完成 AGC SDK 初始化单独验证登录单独验证一条 Cloud DB 读写最后接入本地同步队列。不要一次加入所有服务否则错误很难定位。九、迁移阶段推荐按以下顺序演进将页面对 Preferences 的直接依赖收敛到 Repository自定义网址从 JSON 迁移到本地 RDB加入游客/登录状态接入 Cloud DB只做单向下载验证实现上传、删除墓碑和重试队列增加冲突测试与多设备测试最后开启默认同步。十、总结云同步不是把本地 JSON 上传一次而是一套长期运行的数据协议。离线副本、同步状态、删除墓碑、身份隔离、冲突策略与密钥安全缺一不可。借助 AGC 可以减少基础设施维护但仍要把业务边界设计清楚。沿着 Repository → RDB → Cloud DB 的路线演进能够最大限度保护现有 ArkUI 页面和用户数据。

相关新闻

Unity AR应用摄像头切换:AR Foundation实现与避坑指南

Unity AR应用摄像头切换:AR Foundation实现与避坑指南

1. 项目概述:为什么AR应用需要摄像头切换?在Unity中开发AR应用,我们常常会默认使用设备的后置摄像头来捕捉现实世界,这几乎是所有AR体验的起点。但如果你想让用户扫描桌上的二维码、或者想做一个能让用户自拍并叠加AR特效的滤镜应…

2026/10/12 21:21:26 阅读更多 →
存储式测斜仪设计与工程监测应用解析

存储式测斜仪设计与工程监测应用解析

1. 存储式测斜仪研制背景与行业需求 在岩土工程、地质监测和建筑安全领域,倾斜变形监测一直是个技术痛点。传统的人工测量方式不仅效率低下,还存在着数据连续性差、监测盲区多等问题。五年前参与某地铁隧道监测项目时,我们就曾因为人工测斜数…

2026/10/11 19:33:23 阅读更多 →
GPT-5.6在软件开发中的实战应用:从代码生成到团队协作

GPT-5.6在软件开发中的实战应用:从代码生成到团队协作

最近在开发者社区里,一个现象越来越明显:很多团队开始用 GPT-5.6 来加速日常开发流程。但真正的问题不是"要不要用",而是"怎么用才能避免踩坑"。很多人以为这只是个代码生成工具,实际上它正在改变整个开发协作…

2026/10/14 5:38:55 阅读更多 →

最新新闻

哇塞!原来毕业论文还能这样写?2026降AIGC网站推荐合集

哇塞!原来毕业论文还能这样写?2026降AIGC网站推荐合集

一、核心工具 TOP4(实测有效) 1. 千笔AI—— 中文双降天花板(首选) 核心优势:查重 降 AI 双效合一,适配知网 / 维普 / 万方 2026 最新算法,实测重复率 42%→8.3%、AIGC 率 56%→4.2%。 核心功能…

2026/10/15 1:16:56 阅读更多 →
MIPS单周期CPU数据通路从零搭建:指令、硬件与控制信号全解析

MIPS单周期CPU数据通路从零搭建:指令、硬件与控制信号全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:16:56 阅读更多 →
交叉验证:原理、变体与规避评估陷阱的完整指南

交叉验证:原理、变体与规避评估陷阱的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:16:56 阅读更多 →
PyTorch工程化源码拆解:数据流、训练循环与部署落地

PyTorch工程化源码拆解:数据流、训练循环与部署落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:16:56 阅读更多 →
Python爬虫实战:requests+XPath稳定抓取豆瓣TOP250图书数据

Python爬虫实战:requests+XPath稳定抓取豆瓣TOP250图书数据

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:16:56 阅读更多 →
基于MP2642GR-Z与STM32F411RE的串联电池主动均衡器设计实践

基于MP2642GR-Z与STM32F411RE的串联电池主动均衡器设计实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:15:56 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →