首页 > 其他分享 >鸿蒙Next之数据同步艺术之四:必要不充分理解分布式数据对象同步

鸿蒙Next之数据同步艺术之四:必要不充分理解分布式数据对象同步

时间:2024-10-23 10:33:03浏览次数:9  
标签:同步 对象 dataObject 之四 Next 数据 变更 分布式

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

分布式数据对象的生命周期

分布式数据对象的生命周期包括以下状态:

  • 未初始化: 未实例化,或已被销毁。
  • 本地数据对象: 已创建对应的数据表,但是还无法进行数据同步。
  • 分布式数据对象: 已创建对应的数据表,设备在线且组网内设置相同 SessionId 的对象数 >= 2,可以跨设备同步数据。若设备掉线或将 SessionId 置为空,分布式数据对象退化为本地数据对象。

分布式数据对象的同步机制

分布式数据对象的同步机制可以分为以下几个步骤:

  1. 创建分布式数据对象: 开发者使用 distributedDataObject.create 方法创建一个分布式数据对象实例,并将业务数据传入。
  2. 设置同步会话ID: 开发者使用 dataObject.setSessionId 方法设置同步会话ID,确保不同设备上的对象可以同步数据。
  3. 数据映射: 开发者对分布式数据对象的“读取”或“赋值”操作会自动映射到内存数据库的 get 和 put 操作。每个属性的变更都会触发数据同步操作。
  4. 数据同步: 当一个设备上的分布式数据对象发生数据变更时,系统会自动将变更数据同步到其他具有相同 SessionId 的设备上。同步过程采用异步方式进行,并通过回调函数通知开发者同步结果。
  5. 数据变更通知: 其他设备上的分布式数据对象也会监听数据变更事件,当收到数据变更通知时,会自动更新本地数据。

数据同步的效率和性能

分布式数据对象的同步机制采用了以下措施来提高效率和性能:

  • 最小数据同步单位: 数据同步是以属性为最小单位的,只有当属性发生变更时才会触发数据同步操作,减少了不必要的同步数据量。
  • 异步数据同步: 数据同步采用异步方式进行,避免了阻塞应用程序的运行。
  • 数据压缩: 系统会自动对同步数据进行压缩,减少网络传输的数据量。
  • 数据校验: 系统会对同步数据进行校验,确保数据的一致性和完整性。

实现分布式数据对象同步的完整代码示例

示例代码

// 导入模块
import { distributedDataObject } from '@kit.ArkData';
// 创建分布式数据对象
let dataObject = distributedDataObject.create(context, data);
// 设置同步会话ID
dataObject.setSessionId(sessionId);
// 监听数据变更
dataObject.on('change', (sessionId, fields) => {
  console.log(`数据变更:${fields.join(',')}`);
});
// 更改数据
dataObject.title = '新的标题';
dataObject.text = '新的文本';
// 添加监听状态变更
dataObject.on('status', (sessionId, networkId, status) => {
  console.log(`状态变更:SessionId=${sessionId}, NetworkId=${networkId}, Status=${status}`);
});
// 添加数据持久化
dataObject.save(deviceId);
// 添加数据撤销
dataObject.revokeSave(callback);
// 添加资产绑定
dataObject.bindAssetStore(assetKey, bindInfo, callback);

代码解析

  1. 导入模块: 首先导入 distributedDataObject 模块,它提供了创建和操作分布式数据对象的接口。
  2. 创建分布式数据对象: 使用 distributedDataObject.create 方法创建一个分布式数据对象实例,并将业务数据传入。
  3. 设置同步会话ID: 使用 dataObject.setSessionId 方法设置同步会话ID,确保不同设备上的对象可以同步数据。
  4. 监听数据变更: 使用 dataObject.on 方法监听数据变更事件,当数据发生变更时,回调函数会被触发。
  5. 更改数据: 通过修改分布式数据对象的属性,触发数据同步操作。
  6. 添加监听状态变更: 使用 dataObject.on 方法监听状态变更事件,例如设备连接状态、数据同步状态等。
  7. 添加数据持久化: 使用 dataObject.save 方法将分布式数据对象持久化到设备上,即使设备重启后,数据也不会丢失。
  8. 添加数据撤销: 使用 dataObject.revokeSave 方法撤销之前保存的分布式数据对象,释放设备空间。
  9. 添加资产绑定: 使用 dataObject.bindAssetStore 方法将分布式数据对象与资产绑定,例如文件、图片等,实现资产的跨设备同步。

总结

分布式数据对象同步是华为鸿蒙HarmonyOS Next 中一个强大的功能,它允许咱们轻松地在多个设备之间同步应用数据。通过深入理解分布式内存数据库、跨设备数据同步机制、数据同步的最小单位以及生命周期等概念,可以有效地利用这一功能,构建多端协同的应用。

标签:同步,对象,dataObject,之四,Next,数据,变更,分布式
From: https://www.cnblogs.com/samex/p/18495817

相关文章

  • 通讯录管理:BusyContacts 支持云同步的跨平台联系人管理macOS电脑软件
    BusyContacts是一款专为Mac设计的通讯录管理软件,支持与AppleContacts/iCloud、Google、Exchange等云服务同步,实现跨平台联系人管理。它提供便捷的联系人创建、查找和管理功能,利用标签系统进行分类,整合社交网络信息,并支持智能过滤器和活动清单展示联系人全面信息。此外,BusyContac......
  • 微力同步轻量易用的迁移数据和同步数据软件
    微力同步一款高效的数据传输工具,简单易用的多平台文件同步软件,惊人的传输速度是不同于其他产品的最大优势,微力同步的智能P2P技术加速同步,会将文件分割成若干份仅KB的数据同步,而文件都会进行AES加密处理。官网链接:微力同步官网-私有云盘企业文件同步团队文件共享协助......
  • Python——脚本实现datax全量同步mysql到hive
    文章目录前言一、展示脚本二、使用准备1、安装python环境2、安装EPEL3、安装脚本执行需要的第三方模块三、脚本使用方法1、配置脚本2、创建.py文件3、执行脚本4、测试生成json文件是否可用前言在我们构建离线数仓时或者迁移数据时,通常选用sqoop和datax等工具进行......
  • 操作系统实验之Windows中的线程与线程同步现象
    一、实验目的1.掌握Windows中线程的操作。2.熟悉线程不同步时的现象及环境因素。3.掌握一种同步对象的使用。二、实验理论基础及教材对应关系1.线程和线程不同步的认识。2.线程间的同步和通信。3.本实验内容主要对应于操作系统教材第2章中关于线程的各节。三、实验内容与步......
  • MySQL的 主从同步
    1.概述MySQL主从同步(Replication)是一种数据备份和灾难恢复的解决方案,同时也可以用于负载均衡和读写分离。通过主从同步,可以将一个MySQL数据库服务器(主服务器)的数据实时复制到另一台或多台MySQL服务器(从服务器)。本文档将介绍如何配置MySQL主从同步,并提供示例操作。2.......
  • MySQL基于gtid同步,新增slave节点
    环境说明:当前MySQL集群为一主一从,新增加Slave节点,将架构变更为一主两从,集群已经运行了很长时间,主节点得binlog早就被purged,启动slave得时候会报错,1236、1062等操作步骤:备份master数据,从节点resetmaster,导入数据1.备份主节点数据:在进行任何操作之前,首先需要对主节点的数据进......
  • 金融交易系统延迟,NTP时间同步服务器为其保驾护航
    金融交易系统延迟,NTP时间同步服务器为其保驾护航金融交易系统延迟,NTP时间同步服务器为其保驾护航京准电子科技官微——ahjzsz“2024年9月27日,上海证券交易所(上交所)的交易系统出现了延迟现象,导致投资者在关键时刻无法及时进行操作。这一现象不仅影响了多家交易平台,还引发了投资......
  • k8s 中的 Gateway API 的背景和简介【k8s 系列之四】
    〇、GatewayAPI的背景第一阶段:Service初始的Kubernetes内部服务向外暴露,使用的是自身的LoadBlancer和NodePort类型的Service。在集群规模逐渐扩大的时候,这种Service管理的方式满足不了我们的需求。比如NodePort需要大量的端口难以维护,多了一层NAT,请求量大会对......
  • 京准电钟:NTP时间同步服务器助力精准计算机数据网络
    京准电钟:NTP时间同步服务器助力精准计算机数据网络京准电钟:NTP时间同步服务器助力精准计算机数据网络京准电子科技官微——ahjzsz摘要:首先对计算机网络时间同步相关技术进行了介绍,然后阐述了时间同步技术在现代计算机网络中的应用与发展,最后指出时间同步网络在下一代网络(......
  • 华为鸿蒙Next:应用启动框架AppStartup的解析与实战应用
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在华为鸿蒙(HarmonyOS)开发领域,应用的启......