女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是分布式數(shù)據(jù)對象呢?

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-07 09:23 ? 次閱讀

3月底發(fā)布的OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)3.1 Release版本中,新增了分布式數(shù)據(jù)對象特性。什么是分布式數(shù)據(jù)對象呢?本期就讓我們一起來了解一下~

一、背景介紹

OpenHarmony 作為分布式操作系統(tǒng),支持運行在不同的終端設備上。這些終端設備通過跨端遷移和多端協(xié)同等,可以為用戶提供豐富、流暢的全場景體驗。在這種分布式場景下,不同設備之間需要進行數(shù)據(jù)互通來實現(xiàn)設備間的配合。

下面先看以下這個分布式場景的示例:

示例:可觸屏和TV的協(xié)作

在 TV/PAD 上觀看視頻時,在可觸屏設備上控制 TV/PAD 上的播放狀態(tài)、進度、音量和速度等,實現(xiàn)多端控制。

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

圖1 多端控制,解放設備限制

要實現(xiàn)上面這個示例的功能,首先必須實現(xiàn)設備之間的數(shù)據(jù)同步。傳統(tǒng)方式下,設備之間的數(shù)據(jù)同步,需要開發(fā)者完成消息處理邏輯,包括:建立通信鏈接、消息收發(fā)處理、錯誤重試、數(shù)據(jù)沖突解決等操作,工作量非常大。而且設備越多,調試復雜度將呈指數(shù)增長。是否有更簡單的實現(xiàn)方式?經過分析,我們發(fā)現(xiàn),示例中的播放狀態(tài)、進度、音量和速度等其實都是變量。如果這些變量支持“全局”訪問,那么開發(fā)者跨設備訪問這些變量就能像操作本地變量一樣,數(shù)據(jù)就能夠自動高效、便捷地實現(xiàn)多端同步了。

為此,本次 OpenHarmony v3.1 Release 版本新增了分布式數(shù)據(jù)對象特性。分布式數(shù)據(jù)對象為開發(fā)者在分布式應用場景下提供簡單易用的 JS 接口,輕松實現(xiàn)多設備間同應用的數(shù)據(jù)協(xié)同,同時設備間可以監(jiān)聽對象的狀態(tài)和數(shù)據(jù)變更。與傳統(tǒng)方式相比,分布式數(shù)據(jù)對象大大減少了開發(fā)者的工作量。

(為方便描述,后文中“分布式數(shù)據(jù)對象”也簡稱為“對象”。)

二、原理解析

這么簡單高效的分布式數(shù)據(jù)對象技術具體如何實現(xiàn)的呢?讓我們來一一解析~

1.對象的數(shù)據(jù)同步

分布式數(shù)據(jù)對象,最重要的功能就是對象之間的數(shù)據(jù)同步。可信組網內的設備可以在本地創(chuàng)建分布式數(shù)據(jù)對象,并設置 sessionID。不同設備上的分布式數(shù)據(jù)對象,通過設置相同的 sessionID,建立對象之間的同步關系。

如圖 3 所示,設備 A 和設備 B 上的“分布式數(shù)據(jù)對象1”,其 sessionID 均為 session1,這兩個對象建立了 session1 的同步關系。

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

圖2對象的同步關系

一個同步關系中,一個設備只能有一個對象加入。比如圖 3 中,設備 A 的“分布式數(shù)據(jù)對象 1”已經加入了 session1 的同步關系,所以,設備 A 的“分布式數(shù)據(jù)對象 2”就加入失敗了。

建立同步關系后,每個 session 有一份共享對象數(shù)據(jù)。加入了同一個 session 的對象,支持以下操作:

(1)讀取/修改 session 中的數(shù)據(jù)。

(2)監(jiān)聽數(shù)據(jù)變更,感知其他對象對共享對象數(shù)據(jù)的修改。

(3)監(jiān)聽狀態(tài)變更,感知其他對象的加入和離開。

關于分布式數(shù)據(jù)對象的數(shù)據(jù)同步,值得注意的是,同步的最小單位是“屬性”。比如,圖 4 中對象 1 包含三個屬性:name、age 和 parents。當其中一個屬性變更時,則數(shù)據(jù)同步時只需同步此變更的屬性。

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

圖3數(shù)據(jù)視圖

2.對象的生命周期

接下來,我們從生命周期的角度來全面認識一下分布式數(shù)據(jù)對象。

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

圖4生命周期

如圖 5 所示,對象包括三種狀態(tài):未初始化、本地對象和分布式對象。這三種狀態(tài)說明如下:

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

圖5對象的三種狀態(tài)

根據(jù)條件變化,對象在這三種狀態(tài)之間會來回切換:

最開始,對象處于未初始化狀態(tài)。實例化之后,對象就從未初始化狀態(tài)切換到本地對象狀態(tài)。給對象設置 sessionID,收到對端設備對象上線通知后,此時可以跨設備同步數(shù)據(jù)了,對象就進入了分布式對象狀態(tài)。

本端或遠端設備下線,或者 sessionID 被清除,那么對象又切回本地對象狀態(tài)。分布式對象實例和對應的內存數(shù)據(jù)庫都保存在應用程序的進程空間,當應用程序退出后,分布式對象和內存數(shù)據(jù)庫也隨之銷毀,對象直接進入未初始化狀態(tài)。

三、開發(fā)約束及案例

經過上面的介紹,大家對分布式數(shù)據(jù)對象已經有了充分的了解了,下面就要介紹開發(fā)者們最關心的“怎么用”的問題了。

在使用分布式數(shù)據(jù)對象之前,我們先說明一下相關的開發(fā)約束:

1. 單個應用程序最多只能創(chuàng)建 16 個分布式數(shù)據(jù)對象實例。

2. 考慮到性能和用戶體驗,最多不超過 3 個設備進行數(shù)據(jù)協(xié)同。

3. 考慮到性能和用戶體驗,分布式數(shù)據(jù)對象大小限制在 500KB 以內。

4. 分布式數(shù)據(jù)對象的數(shù)據(jù)同步發(fā)生在同一個應用程序下,且同 session ID 之間。

接下來,我們通過一個簡單的開發(fā)案例來講解如何使用分布式數(shù)據(jù)對象。此案例中,設備 A 和設備 B 分別創(chuàng)建一個包含 3 個屬性的對象,這兩個對象加入到同一個 session,建立同步關系。一個對象的屬性變更會自動同步到另一個對象,從而實現(xiàn)“全局變量”效果。

通過此案例,我們能夠掌握分布式數(shù)據(jù)對象的基本操作,包括:

1. 創(chuàng)建對象

2. 設置 sessionID

3. 設置監(jiān)聽對象變更的回調

4. 監(jiān)聽狀態(tài)變更

代碼示例如下:

1. 設備 A 的 JS 代碼示例:



		

import distributedObject from '@ohos.data.distributedDataObject'//創(chuàng)建對象,對象包含三個屬性:name、age和isVisvar g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false});//設置sessionID為“123456”g_object.setSessionId("123456"); //設置監(jiān)聽對象變更的回調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 代碼示例:




		

//創(chuàng)建對象,對象包含三個屬性:name、age和isVisvar g_object = distributedObject.createDistributedObject({name:"Amy", age:undefined, isVis:false});//設置sessionID為“123456”,這個session里已經有設備A的對象g_object.setSessionId("123456"); //監(jiān)聽狀態(tài)變更statusCallback : function (sessionId, networkid, status) {//成功加入session并檢測到設備A上線if (status == "online" && networkid == networkid_A) {//此時設備A的age值是18,而本地age值是undefined,通過console.info自動同步設備A的age數(shù)據(jù)到本地。如果想使用本地數(shù)據(jù),可以把age初始值改為有效值,像name一樣。 console.info ("age = {g_object.age}"); g_object.name = "jack"; //此時設備A的changeCallback收到對象變更的回調,打印出“changed !name jack”。//后續(xù)使用g_object.做的屬性修改都會自動同步給設備A,同時g_object.屬性訪問的數(shù)據(jù)都是session中的最新數(shù)據(jù)(也包括設備A上的修改)。設備A和B相當于使用同一個全局變量g_object。 }}g_object.on("status",this.statusCallback);

本期,我們?yōu)榇蠹抑v解了分布式數(shù)據(jù)對象的產生背景、原理及開發(fā)案例。如果你想體驗更詳細的分布式數(shù)據(jù)對象,歡迎加入 OpenHarmony 開源項目,項目對應分布式數(shù)據(jù)庫倉庫地址:

https://gitee.com/openharmony/distributeddatamgr_objectstore

后續(xù)倉庫還將陸續(xù)發(fā)出分布式數(shù)據(jù)對象的 sample 哦,敬請期待!

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:分布式數(shù)據(jù)對象:超級終端的"全局變量"

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    分布式存儲數(shù)據(jù)恢復—虛擬機上hbase和hive數(shù)據(jù)數(shù)據(jù)恢復案例

    分布式存儲數(shù)據(jù)恢復環(huán)境: 16臺某品牌R730xd服務器節(jié)點,每臺服務器節(jié)點上有數(shù)臺虛擬機。 虛擬機上部署Hbase和Hive數(shù)據(jù)庫。 分布式存儲故障:
    的頭像 發(fā)表于 04-17 11:05 ?168次閱讀

    分布式dtu和分散dtu說明介紹

    分布式dtu和分散dtu有保護測控單元和綜合通訊單元組成,自愈采用基于通用面向對象變電站事件(GOOSE)的高速網絡通信方 ,利用配電網中相鄰開關的故障信息,快速定位故障位置并自動
    的頭像 發(fā)表于 03-19 22:25 ?932次閱讀
    <b class='flag-5'>分布式</b>dtu和分散<b class='flag-5'>式</b>dtu說明介紹

    分布式存儲有哪幾種類型?

    分布式存儲有哪幾種類型?分布式存儲系統(tǒng)是一種將數(shù)據(jù)分散存儲在多臺獨立節(jié)點上的技術,根據(jù)數(shù)據(jù)模型可分為鍵值存儲、列式存儲、文檔存儲和圖形存儲等類型;按
    的頭像 發(fā)表于 02-20 11:00 ?473次閱讀

    分布式云化數(shù)據(jù)庫有哪些類型

    分布式云化數(shù)據(jù)庫有哪些類型?分布式云化數(shù)據(jù)庫主要類型包括:關系型分布式數(shù)據(jù)庫、非關系型分布式數(shù)據(jù)
    的頭像 發(fā)表于 01-15 09:43 ?405次閱讀

    基于ptp的分布式系統(tǒng)設計

    在現(xiàn)代分布式系統(tǒng)中,精確的時間同步對于確保數(shù)據(jù)一致性、系統(tǒng)穩(wěn)定性和性能至關重要。PTP(Precision Time Protocol)是一種網絡協(xié)議,用于在分布式系統(tǒng)中實現(xiàn)高精度的時間同步
    的頭像 發(fā)表于 12-29 10:09 ?467次閱讀

    HarmonyOS Next 應用元服務開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)文件資產遷移

    使用分布式數(shù)據(jù)對象遷移數(shù)據(jù),當需要遷移的數(shù)據(jù)較大(100KB以上)或需要遷移文件時,可以使用分布式
    發(fā)表于 12-24 10:11

    HarmonyOS Next 應用元服務開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權限與基礎數(shù)據(jù)

    使用分布式數(shù)據(jù)對象遷移數(shù)據(jù),當需要遷移的數(shù)據(jù)較大(100KB以上)或需要遷移文件時,可以使用分布式
    發(fā)表于 12-24 09:40

    分布式光纖測溫解決方案

    分布式光纖測溫解決方案
    的頭像 發(fā)表于 11-12 01:02 ?500次閱讀
    <b class='flag-5'>分布式</b>光纖測溫解決方案

    分布式光纖測溫是什么?應用領域是?

    時,該處的散射光特性會受到影響。通過高速信號采集與數(shù)據(jù)處理技術,可以準確地定位發(fā)生溫度變化的位置,并給出實時的溫度信息。簡而言之,分布式光纖測溫技術將整條傳輸光纖作為傳感器,光纖上的每一點都兼具“傳”和“感”
    的頭像 發(fā)表于 10-24 15:30 ?1106次閱讀
    <b class='flag-5'>分布式</b>光纖測溫是什么?應用領域是?

    分布式輸電線路故障定位中的分布式是指什么

    的全面覆蓋。這些監(jiān)測點之間通過無線網絡進行數(shù)據(jù)互聯(lián),形成一個分布式的監(jiān)測系統(tǒng); 三相覆蓋:對于三相輸電線路,分布式故障定位系統(tǒng)會在每相上都安裝相應的監(jiān)測裝置,以實現(xiàn)對三相導線的全面監(jiān)控。 二、技術特點 行波測距
    的頭像 發(fā)表于 10-16 11:39 ?625次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    一文講清什么是分布式云化數(shù)據(jù)庫!

    分布式云化數(shù)據(jù)庫是一種先進的數(shù)據(jù)管理系統(tǒng),它將傳統(tǒng)的數(shù)據(jù)庫技術與分布式計算、云計算和大數(shù)據(jù)處理技
    的頭像 發(fā)表于 10-14 10:06 ?437次閱讀

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案
    的頭像 發(fā)表于 09-14 09:53 ?627次閱讀
    基于<b class='flag-5'>分布式</b>存儲系統(tǒng)醫(yī)療影像<b class='flag-5'>數(shù)據(jù)</b>存儲解決方案

    基于分布式對象存儲WDS的信托非結構化數(shù)據(jù)整合平臺

    基于分布式對象存儲WDS的信托非結構化數(shù)據(jù)整合平臺
    的頭像 發(fā)表于 08-28 09:56 ?595次閱讀
    基于<b class='flag-5'>分布式</b><b class='flag-5'>對象</b>存儲WDS的信托非結構化<b class='flag-5'>數(shù)據(jù)</b>整合平臺

    安科瑞分布式光伏監(jiān)控系統(tǒng)的應用

    低、就地消納等獨特的優(yōu)勢而被廣泛應用,近年來呈現(xiàn)跨越發(fā)展趨勢,研究分布式光伏接入對配電網的影響,對于提升電網及人身安全具有重要意義。本文以分布式光伏為研究對象,結合工程實例,研究了
    的頭像 發(fā)表于 08-14 08:41 ?532次閱讀
    安科瑞<b class='flag-5'>分布式</b>光伏監(jiān)控系統(tǒng)的應用

    鴻蒙開發(fā)管理:ohos.account.distributedAccount 分布式帳號管理

    獲取分布式帳號單實例對象
    的頭像 發(fā)表于 07-08 10:03 ?440次閱讀
    鴻蒙開發(fā)管理:ohos.account.distributedAccount <b class='flag-5'>分布式</b>帳號管理