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

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

3天内不再提示

分布式数据对象的产生背景、原理及开发案例

科技观点 来源:科技观点 作者:科技观点 2022-04-27 15:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

在3月底发布的OpenHarmony v3.1 Release版本中,新增了分布式数据对象特性。什么是分布式数据对象呢?本期就让我们一起来了解一下。

一、背景介绍

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

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

示例1:可触屏和TV的协作

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

pYYBAGJo6lCAZQOyAAFHY0dggic470.png

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

示例2:词典笔同步翻译

使用词典笔扫描书本内容,在手机/PAD上同步展示翻译结果、内容链接、词典、例句和音标等。

poYBAGJo6lCAVPQsAACdAP9Evc8276.png

图2 同步翻译,学习不限小屏

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

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

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

二、原理解析

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

1. 对象的数据同步

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

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

pYYBAGJo6lCASuZ3AAAs8wf0xhg220.png

图3 对象的同步关系

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

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

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

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

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

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

poYBAGJo6lGAAGSxAAA5V0ogv58182.png

图4 数据视图

2. 对象的生命周期

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

pYYBAGJo6lGAM71LAAAiZAT8rvE420.png

图5 生命周期

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

poYBAGJo6lGADgx6AAA2nAf5wUA491.png

图6 对象的三种状态

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

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

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

三、开发约束及案例

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

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

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

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

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

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

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

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

1. 创建对象

2. 设置sessionID

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

4. 监听状态变更

代码示例如下:

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

pYYBAGJo6lGAbgUSAAD7YzZdNcQ371.png

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

https://gitee.com/openharmony/distributeddatamgr_objectstore

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

审核编辑:汤梓红

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

    关注

    37

    文章

    7328

    浏览量

    128623
  • 分布式数据
    +关注

    关注

    0

    文章

    9

    浏览量

    9140
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    摘要:在“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小容量工商业
    的头像 发表于 08-23 08:04 3305次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控系统在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

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

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

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

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

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

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

    分布式存储数据恢复—虚拟机上hbase和hive数据数据恢复案例

    分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障:
    的头像 发表于 04-17 11:05 511次阅读

    分布式光伏发运维系统实际应用案例分享

    和可持续发展的重要推动力量。国家能源局于2025年1月发布了《分布式光伏发电开发建设管理办法》,对分布式光伏的分类、上网模式、备案管理、电网接入等进行了详细规定,未来分布式光伏将进一步
    的头像 发表于 04-09 14:46 989次阅读
    <b class='flag-5'>分布式</b>光伏发运维系统实际应用案例分享

    分布式dtu和分散dtu说明介绍

    分布式dtu和分散dtu有保护测控单元和综合通讯单元组成,自愈采用基于通用面向对象变电站事件(GOOSE)的高速网络通信方 ,利用配电网中相邻开关的故障信息,快速定位故障位置并自动
    的头像 发表于 03-19 22:25 2739次阅读
    <b class='flag-5'>分布式</b>dtu和分散<b class='flag-5'>式</b>dtu说明介绍

    分布式站点设备出现异常故障如何快速定位并进行维护

    一、行业背景 随着数字化、经济化进程的飞速发展,分布式站点在各个行业中的应用愈发广泛。无论是集团企业的分布式工厂,还是城市生命线的供水泵站,亦或是负责存储与处理海量数据
    的头像 发表于 03-03 11:02 574次阅读
    <b class='flag-5'>分布式</b>站点设备出现异常故障如何快速定位并进行维护

    分布式存储有哪几种类型?

    分布式存储有哪几种类型?分布式存储系统是一种将数据分散存储在多台独立节点上的技术,根据数据模型可分为键值存储、列式存储、文档存储和图形存储等类型;按
    的头像 发表于 02-20 11:00 1124次阅读

    分布式日志追踪ID实战

    作者:京东物流 张小龙 本文通过介绍分布式应用下各个场景的全局日志ID透传思路,以及介绍分布式日志追踪ID简单实现原理和实战效果,从而达到通过提高日志查询排查问题的效率。 背景 开发
    的头像 发表于 01-20 10:16 905次阅读

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据
    的头像 发表于 01-15 09:43 865次阅读

    基于ptp的分布式系统设计

    在现代分布式系统中,精确的时间同步对于确保数据一致性、系统稳定性和性能至关重要。PTP(Precision Time Protocol)是一种网络协议,用于在分布式系统中实现高精度的时间同步
    的头像 发表于 12-29 10:09 974次阅读

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移

    设备文件访问实现文件的迁移,难以获取文件同步完成的时间。为了保证更高的成功率,文件的迁移不建议继续通过该方式实现,推荐使用分布式数据对象携带资产的方式。开发者此前通过跨设备文件访问实现
    发表于 12-24 10:11

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    设备文件访问实现文件的迁移,难以获取文件同步完成的时间。为了保证更高的成功率,文件的迁移不建议继续通过该方式实现,推荐使用分布式数据对象携带资产的方式。开发者此前通过跨设备文件访问实现
    发表于 12-24 09:40

    大型工商业分布式光伏如何配置防逆流方案?

    国家能源局综合司发布的《分布式光伏发电开发建设管理办法(征求意见稿)》对分布式光伏发电项目的开发建设提供了更清晰的规范指导,该管理办法中规定“大型工商业
    的头像 发表于 12-19 18:04 1564次阅读
    大型工商业<b class='flag-5'>分布式</b>光伏如何配置防逆流方案?