0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是分布式数据对象呢?

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:OpenAtom OpenHarmony 2022-06-07 09:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

3月底发布的OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.1 Release版本中,新增了分布式数据对象特性。什么是分布式数据对象呢?本期就让我们一起来了解一下~

一、背景介绍

OpenHarmony 作为分布式操作系统,支持运行在不同的终端设备上。这些终端设备通过跨端迁移和多端协同等,可以为用户提供丰富、流畅的全场景体验。在这种分布式场景下,不同设备之间需要进行数据互通来实现设备间的配合。

下面先看以下这个分布式场景的示例:

示例:可触屏和TV的协作

在 TV/PAD 上观看视频时,在可触屏设备上控制 TV/PAD 上的播放状态、进度、音量和速度等,实现多端控制。

0dde95e2-e59a-11ec-ba43-dac502259ad0.jpg

图1 多端控制,解放设备限制

要实现上面这个示例的功能,首先必须实现设备之间的数据同步。传统方式下,设备之间的数据同步,需要开发者完成消息处理逻辑,包括:建立通信链接、消息收发处理、错误重试、数据冲突解决等操作,工作量非常大。而且设备越多,调试复杂度将呈指数增长。是否有更简单的实现方式?经过分析,我们发现,示例中的播放状态、进度、音量和速度等其实都是变量。如果这些变量支持“全局”访问,那么开发者跨设备访问这些变量就能像操作本地变量一样,数据就能够自动高效、便捷地实现多端同步了。

为此,本次 OpenHarmony v3.1 Release 版本新增了分布式数据对象特性。分布式数据对象为开发者在分布式应用场景下提供简单易用的 JS 接口,轻松实现多设备间同应用的数据协同,同时设备间可以监听对象的状态和数据变更。与传统方式相比,分布式数据对象大大减少了开发者的工作量。

(为方便描述,后文中“分布式数据对象”也简称为“对象”。)

二、原理解析

这么简单高效的分布式数据对象技术具体如何实现的呢?让我们来一一解析~

1.对象的数据同步

分布式数据对象,最重要的功能就是对象之间的数据同步。可信组网内的设备可以在本地创建分布式数据对象,并设置 sessionID。不同设备上的分布式数据对象,通过设置相同的 sessionID,建立对象之间的同步关系。

如图 3 所示,设备 A 和设备 B 上的“分布式数据对象1”,其 sessionID 均为 session1,这两个对象建立了 session1 的同步关系。

0dfe75ec-e59a-11ec-ba43-dac502259ad0.png

图2对象的同步关系

一个同步关系中,一个设备只能有一个对象加入。比如图 3 中,设备 A 的“分布式数据对象 1”已经加入了 session1 的同步关系,所以,设备 A 的“分布式数据对象 2”就加入失败了。

建立同步关系后,每个 session 有一份共享对象数据。加入了同一个 session 的对象,支持以下操作:

(1)读取/修改 session 中的数据。

(2)监听数据变更,感知其他对象对共享对象数据的修改。

(3)监听状态变更,感知其他对象的加入和离开。

关于分布式数据对象的数据同步,值得注意的是,同步的最小单位是“属性”。比如,图 4 中对象 1 包含三个属性:name、age 和 parents。当其中一个属性变更时,则数据同步时只需同步此变更的属性。

0e247940-e59a-11ec-ba43-dac502259ad0.png

图3数据视图

2.对象的生命周期

接下来,我们从生命周期的角度来全面认识一下分布式数据对象。

0e6976a8-e59a-11ec-ba43-dac502259ad0.png

图4生命周期

如图 5 所示,对象包括三种状态:未初始化、本地对象和分布式对象。这三种状态说明如下:

0e8dbe14-e59a-11ec-ba43-dac502259ad0.png

图5对象的三种状态

根据条件变化,对象在这三种状态之间会来回切换:

最开始,对象处于未初始化状态。实例化之后,对象就从未初始化状态切换到本地对象状态。给对象设置 sessionID,收到对端设备对象上线通知后,此时可以跨设备同步数据了,对象就进入了分布式对象状态。

本端或远端设备下线,或者 sessionID 被清除,那么对象又切回本地对象状态。分布式对象实例和对应的内存数据库都保存在应用程序的进程空间,当应用程序退出后,分布式对象和内存数据库也随之销毁,对象直接进入未初始化状态。

三、开发约束及案例

经过上面的介绍,大家对分布式数据对象已经有了充分的了解了,下面就要介绍开发者们最关心的“怎么用”的问题了。

在使用分布式数据对象之前,我们先说明一下相关的开发约束:

1. 单个应用程序最多只能创建 16 个分布式数据对象实例。

2. 考虑到性能和用户体验,最多不超过 3 个设备进行数据协同。

3. 考虑到性能和用户体验,分布式数据对象大小限制在 500KB 以内。

4. 分布式数据对象的数据同步发生在同一个应用程序下,且同 session ID 之间。

接下来,我们通过一个简单的开发案例来讲解如何使用分布式数据对象。此案例中,设备 A 和设备 B 分别创建一个包含 3 个属性的对象,这两个对象加入到同一个 session,建立同步关系。一个对象的属性变更会自动同步到另一个对象,从而实现“全局变量”效果。

通过此案例,我们能够掌握分布式数据对象的基本操作,包括:

1. 创建对象

2. 设置 sessionID

3. 设置监听对象变更的回调

4. 监听状态变更

代码示例如下:

1. 设备 A 的 JS 代码示例:



		

import distributedObject from '@ohos.data.distributedDataObject'//创建对象,对象包含三个属性:name、age和isVisvar g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false});//设置sessionID为“123456”g_object.setSessionId("123456"); //设置监听对象变更的回调changeCallback : function (sessionId, changeData) { if (changeData != null && changeData != undefined) { changeData.forEach(element => { console.info("changed !" + element + " " + g_object[element]); }); }} g_object.on("change",this.changeCallback);

2. 设备 B 的 JS 代码示例:




		

//创建对象,对象包含三个属性:name、age和isVisvar g_object = distributedObject.createDistributedObject({name:"Amy", age:undefined, isVis:false});//设置sessionID为“123456”,这个session里已经有设备A的对象g_object.setSessionId("123456"); //监听状态变更statusCallback : function (sessionId, networkid, status) {//成功加入session并检测到设备A上线if (status == "online" && networkid == networkid_A) {//此时设备A的age值是18,而本地age值是undefined,通过console.info自动同步设备A的age数据到本地。如果想使用本地数据,可以把age初始值改为有效值,像name一样。 console.info ("age = {g_object.age}"); g_object.name = "jack"; //此时设备A的changeCallback收到对象变更的回调,打印出“changed !name jack”。//后续使用g_object.做的属性修改都会自动同步给设备A,同时g_object.属性访问的数据都是session中的最新数据(也包括设备A上的修改)。设备A和B相当于使用同一个全局变量g_object。 }}g_object.on("status",this.statusCallback);

本期,我们为大家讲解了分布式数据对象的产生背景、原理及开发案例。如果你想体验更详细的分布式数据对象,欢迎加入 OpenHarmony 开源项目,项目对应分布式数据库仓库地址:

https://gitee.com/openharmony/distributeddatamgr_objectstore

后续仓库还将陆续发出分布式数据对象的 sample 哦,敬请期待!

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分布式数据
    +关注

    关注

    0

    文章

    9

    浏览量

    9163
  • OpenHarmony
    +关注

    关注

    33

    文章

    3974

    浏览量

    21356

原文标题:分布式数据对象:超级终端的"全局变量"

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2022全新版!Java分布式架构设计与开发实战(完结)

    2022全新版!Java分布式架构设计与开发实战(完结) 分库分表实战:Java海量数据存储架构设计 在现代互联网应用中,随着业务规模的指数级增长,数据库性能瓶颈已成为制约系统发展的关键因素。当单
    发表于 03-30 15:20

    TiDB分布式数据库运维实践

    TiDB 是 PingCAP 开发的开源分布式关系型数据库,兼容 MySQL 5.7 协议,底层存储基于 TiKV(分布式 KV 存储)和 RocksDB。它解决的核心问题是:当单机 MySQL 无法承载
    的头像 发表于 03-04 15:44 283次阅读

    分布式能源管理物联网解决方案

    分布式能源系统(如光伏电站、储能电站等)具有设备多样、分布较广、数据量大等特点,传统人工抄表或本地监控模式存在数据滞后、管理低效、优化困难等问题。物通博联(WideIOT)结合边缘计算
    的头像 发表于 01-21 11:39 465次阅读
    <b class='flag-5'>分布式</b>能源管理物联网解决方案

    分布式 IO 选型注意事项

    在工业 4.0 浪潮推动下,分布式 IO 作为工业互联的核心底层设备,已成为制造业实现设备互联、数据采集、柔性生产的关键支撑。本文将助力企业避开选型误区,最大化发挥分布式 IO 的应用价值。​ 产品
    的头像 发表于 12-30 14:14 513次阅读
    <b class='flag-5'>分布式</b> IO 选型注意事项

    光伏规约转换器分布式光伏调控“四可”并网实施案例

    1.背景近年来,随着国家分布式光伏的利好政策,各地分布式光伏装机规模增加迅猛。分布式光伏具有间歇性、分散性、随机性等特点,由于电网末端容量受限,海量分布式光伏接入电网可能引发电网潮流方
    的头像 发表于 12-19 10:13 4335次阅读
    光伏规约转换器<b class='flag-5'>分布式</b>光伏调控“四可”并网实施案例

    如何解决分布式光伏计量难题?

    %。同时,可提升发电效率、降低发电成本的新型技术逐步落地,推动光伏系统向更高效、更紧凑的方向发展,进而对电表在精度、数据更新速度及适配性方面也提出了更高要求。 分布式光伏遇计量难题 分布式光伏常用 “自己发的电自己用,用不完的卖
    的头像 发表于 11-07 14:55 412次阅读
    如何解决<b class='flag-5'>分布式</b>光伏计量难题?

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    分布式光伏本地和远程通信方案,并研究分布式光伏采集模型的构建、多源数据融合估计、面向分布式光伏的有功、无功功率优化控制等关键技术,实现了对小容量工商业
    的头像 发表于 08-23 08:04 3660次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控系统在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在通过智能化的监测手段,实现对分布式光伏电站的全方位、高精度、实时化管理。该系统能
    的头像 发表于 08-22 10:51 3466次阅读
    <b class='flag-5'>分布式</b>光伏发电监测系统技术方案

    分布式光伏总出问题?安科瑞分布式光伏监控系统来“救场”

    一、分布式光伏的痛点大揭秘 在 “双碳” 目标的大力推动下,分布式光伏作为绿色能源领域的重要力量,正以前所未有的速度蓬勃发展,越来越多的企业和家庭选择安装分布式光伏系统。然而,随着分布式
    的头像 发表于 07-16 16:50 947次阅读
    <b class='flag-5'>分布式</b>光伏总出问题?安科瑞<b class='flag-5'>分布式</b>光伏监控系统来“救场”

    Ceph分布式存储系统解析

    在当今数据爆炸的时代,企业对存储系统的需求日益增长,传统的集中式存储已经无法满足大规模数据处理的要求。分布式存储系统应运而生,而Ceph作为开源分布式存储系统的佼佼者,以其高可用性、高
    的头像 发表于 07-14 11:15 1219次阅读

    分布式IO选型指南:2025年分布式无线远程IO品牌及采集控制方案详解

    近年来,随着工业物联网(IIoT)、智能制造和工业4.0的深入发展,分布式无线远程IO模块在工业控制领域的应用愈发广泛。这种模块通过无线方式实现远程数据采集与控制,极大地提高了工业设施的灵活性和效率
    的头像 发表于 06-23 09:48 1469次阅读

    双电机分布式驱动汽车高速稳定性机电耦合控制

    摘要:为了利用所设计的双电机防滑差速驱动系统来提高分布式驱动汽车的动力学性能,在前期同轴耦合驱动控制理论研究的基础上,开展该车的高速稳定性机电耦合控制研究。建立并验证包含所设计驱动系统在内的分布式
    发表于 06-18 16:37

    曙光存储领跑中国分布式存储市场

    近日,赛迪顾问发布《中国分布式存储市场研究报告(2025)》,指出2024 年中国分布式存储市场首次超过集中式存储,规模达 198.2 亿元,增速 43.7%。
    的头像 发表于 05-19 16:50 1454次阅读

    分布式光纤传感的用途

    生态灾难。这些场景中,一种名为"分布式光纤传感"的技术正悄然编织着一张无形的感知网络,用光信号的"语言"实时翻译着环境的细微变化。 一、技术原理:光与物质的"对话" 分布式光纤传感技术的核心,在于将光纤本身转化为兼具传感与传输功能的"智能神
    的头像 发表于 05-11 17:26 1563次阅读

    分布式光伏电力问题层出不穷?安科瑞分布式光伏运维系统来“救场”

    一、分布式光伏电力运维,痛点大揭秘​ ​ 分布式光伏作为实现绿色能源转型的关键一环,近年来在我国得到了迅猛发展。国家能源局数据显示,截至 2023 年底,中国分布式光伏电站累计并网容量
    的头像 发表于 05-07 17:14 1092次阅读
    <b class='flag-5'>分布式</b>光伏电力问题层出不穷?安科瑞<b class='flag-5'>分布式</b>光伏运维系统来“救场”