国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HarmonyOS分布式協同演奏技術實現路線(Java)

系統 OpenHarmony
本文將重點講述下自由樂隊分布式協同演奏的技術實現路線,重點講的是思路。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

一、寫在前面的話

分布式能力是鴻蒙的一大亮點,不管是分布式數據庫,還是分布式文件管理,抑或是分布式任務流轉,都給我們日常的使用習慣帶來很大的變革。很多時候我就在想,我們還能怎樣應用分布式呢?百思不得其解之時,愛因斯坦的小提琴就莫名其妙地浮現在了腦海里。音樂!一個好的樂隊、好的樂團,不正是由一個個小的部分組成的嗎?于是,自由樂隊就蘊育而出了。

本文將重點講述下自由樂隊分布式協同演奏的技術實現路線,重點講的是思路,講的不好的地方還請大家多多包涵。

二、路線一

采用監聽數據庫的方法實現組網間設備的協同演奏。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

主要流程如上圖,核心就是分布式狀態數據庫和分布式音樂演奏數據庫,通過監聽這兩個數據庫實現組網間設備的組隊和協同演奏功能。分布式狀態數據庫用于組隊信息的傳輸,分布式協同演奏數據庫用于樂器模擬按鍵信息的傳輸。

1、分布式音樂演奏數據庫的初始化

如下圖,我們軟件初始化的時候就會創建屬于該設備的DeviceKvStore,并對其進行監聽。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

同時,我們在DataAbility里有個deviceKvStores用來保存deviceId和DeviceKvStore的對應關系。

2、判斷是否為本地端

如下圖,我們采用通過intent攜帶的關鍵字來判斷是否為本地端。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

本地端調起協同端時,寫入該關鍵字:

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

3、點擊事件的處理

如下圖,當監聽到點擊事件發生的時候,統一調用DataAbility.clickSound(),為防止阻塞,我們使用異步調用的方式。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

而DataAbility.clickSound()則會通過DeviceId獲取到DeviceKvStore,同時將按鍵點擊事件的mSrc(即相應按鍵的ID)寫入。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

?4、DeviceKvStore數據庫的監聽

如下圖,首先會判斷是否為本地端,若為本地端則處理點擊事件。處理點擊事件的核心就是獲取到點擊按鍵的mSrc,首先通過notification.getDeviceId()獲取到DeviceId,然后通過DeviceId去獲取響應的DeviceKvStore,然后通過key來拿到mSrc,進而調用DataAbility.playClip()。DataAbility.playClip()就是模擬樂器演奏的相關函數。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

?5、分布式狀態數據庫的初始化

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

6、分布式狀態數據庫的監聽

核心就是獲取此時退出隊伍設備的DeviceId,若當前設備為本地端,則停止對該設備進行監聽,同時彈出該設備退出隊伍的提示;若當前設備為協同端,同時發起退出設備的DeviceId為當前隊伍的本地端,則表示該隊伍已解散,當前設備變為本地端,同時彈出隊伍已解散的提示。

#夏日挑戰賽#HarmonyOS分布式協同演奏技術實現路線(Java)-開源基礎軟件社區

值得一提的是,分布式狀態數據庫是所有設備初始化的時候都通過DataAbility.STATE_KEY來監聽同一個分布式狀態數據庫DeviceKvStore,而分布式音樂演奏數據庫則是每個設備都會根據自己唯一的DataAbility.storeId來創建分布式音樂演奏數據庫DeviceKvStore,也就是說會有多個分布式音樂演奏數據庫。

因此,我們是在DataAbility里通過deviceKvStores來儲存DeviceId和DeviceKvStore的對應關系。組隊的實質就是實現對相應分布式音樂演奏數據庫的監聽。多個DeviceKvStore就能夠實例化多個KvStoreObserver來對多個數據庫進行監聽,并行進行處理,減少并發帶來的影響,降低協同演奏的延時。

7、協同演奏模擬樂器

協同端和本地端一樣,當監聽到點擊事件的時候,也是調用DataAbility.clickSound()。同樣在DataAbility.clickSound()里通過DeviceId獲取DeviceKvStore,然后將按鍵點擊事件的mSrc寫入相應的DeviceKvStore分布式數據庫。

不同的是協同端的KvStoreObserver雖然監聽到了數據變化,但是判斷當前設備為協同端,則不會去進行模擬樂器演奏的播放。而此時,組隊本地端也同時監聽到了數據變化,進而去進行模擬樂器演奏的播放。

三、路線二

我們想到的第二種實現分布式協同演奏的方法就是類似于Codelabs里面的分布式游戲手柄的寫法(鏈接在文末),本地端調起協同端的時候通過IAbilityConnection進行連接。同時,協同端通過proxy.senDataToRemote()將按鍵信息發送給本地端,本地端通過onRemoteRequest()來處理協同端發來的信息。詳細講解可以參考Codelabs里面的代碼,同時有一些包也在Demo里面封裝好了,可以不用重復造輪子。

具體代碼實現我之前測試的時候都寫好了。BUT,因為太卡了,我們就放棄了這條路線,代碼也給回退了。(也可能是我們的水平有限,代碼優化的不是很好)我們當時是先寫的通過訂閱分布式數據庫來實現協同演奏的,但是我最開始是只通過訂閱一個單板本分布式數據庫實現的協同演奏,感覺效果不太理想,就嘗試了路線二。嘗試了之后發現,路線二還沒有之前的延遲小呢,就最終確定了采用路線一,同時后面又對路線一進行了相關的優化,比如采用訂閱分布式狀態數據庫和多個分布式音樂演奏數據庫、異步處理點擊事件、線程阻塞等等技術來降低延遲,最終實現了至少三個設備(當時手上只有三個設備)可以協同演奏一首曲子的程度。

四、總結

協同演奏的實現路線我們研究了兩條,分別是監聽數據庫和直接建立連接。兩者都可以實現功能,但是協同演奏很重要的一點就是延遲,延遲太大就真的只能聽個響了。個人覺得,就目前來看,鴻蒙在分布式減少延遲這塊還是有很長的路要走的。

Codelabs:??分布式游戲手柄(Java)??。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2019-10-10 09:16:34

Zookeeper架構分布式

2023-10-26 18:10:43

分布式并行技術系統

2022-06-27 08:21:05

Seata分布式事務微服務

2024-01-10 08:02:03

分布式技術令牌,

2021-05-28 09:52:00

鴻蒙HarmonyOS應用

2024-01-08 08:05:08

分開部署數據體系系統拆分

2020-11-06 12:12:35

HarmonyOS

2019-10-28 10:10:01

技術研發分布式

2017-07-27 14:32:05

大數據分布式消息Kafka

2024-01-09 08:00:58

2015-06-17 14:10:34

Redis分布式系統協調

2018-05-25 13:12:10

UCloud數據庫UDDB

2021-07-22 10:20:21

鴻蒙HarmonyOS應用

2023-08-21 19:10:34

Redis分布式

2022-01-06 10:58:07

Redis數據分布式鎖

2021-10-25 10:21:59

ZK分布式鎖ZooKeeper

2015-05-18 09:59:48

ZooKeeper分布式計算Hadoop

2024-11-28 15:11:28

2021-07-23 08:57:32

鴻蒙HarmonyOS應用

2019-06-19 15:40:06

分布式鎖RedisJava
點贊
收藏

51CTO技術棧公眾號

a优女a优女片| 欧美一区二区视频在线观看2020| 欧美一区二区三区在线免费观看| 欧美日本精品| 日韩欧美亚洲在线| 国产成人午夜精品影院观看视频| 成人黄色av片| 亚洲精品ww久久久久久p站| 中文字幕亚洲精品视频| 欧美精品日韩精品| 成人久久网站| 国产精品va在线| 翔田千里一区二区| 久久婷婷五月综合色国产香蕉| 亚洲黄色片在线观看| 草莓福利社区在线| 欧美另类高清videos| 亚洲精品小说| 97精品国产97久久久久久粉红| 国产日韩欧美一区二区三区综合| 性感av在线播放| 日韩av在线网址| 久草成人资源| 亚洲精品人成| 中文字幕在线观看一区| 婷婷免费在线视频| 欧美老女人性生活| 国产精品美女久久久| 北条麻妃在线视频| 欧美性受xxxx| 久久青草视频| 超碰97网站| 久久久99精品免费观看不卡| 福利成人在线观看| 最近2019中文免费高清视频观看www99| 国产精品色在线网站| 精品视频在线观看| 日本一区二区三区久久久久久久久不 | 亚洲午夜羞羞片| 性欧美videoshd高清| 久久久久久久一区二区| 国产精品视区| 污污的网站18| 精品国产乱码久久久久久浪潮| 欧美大胆a级| 亚洲国产精品影视| 亚洲va天堂va国产va久| 成人免费毛片嘿嘿连载视频…| 91传媒视频在线观看| 久久综合久久99| 五月天激情在线| 国产欧美最新羞羞视频在线观看| 国产成人免费在线观看| 日本不卡不卡| 国产精品免费久久久| 国产亚洲自拍一区| 在线视频cao| 国产91社区| 亚洲精品久久7777| 99精品女人在线观看免费视频| 欧洲在线视频一区| 日韩欧美国产一区二区| 一区中文字幕电影| 黄页网站在线观看视频| 欧美成人三级在线| 综合一区av| 一级毛片免费视频| 国内精品久久久久久久久| 成人免费av资源| 丁香花在线高清完整版视频 | 韩日精品视频| 男女小视频在线观看| 精品国产美女在线| 激情另类小说区图片区视频区| 99re在线视频| 成人动漫网站在线观看| 国产精品久久看| 国产一区二区在线观| 无码人妻少妇伦在线电影| 亚洲欧美另类自拍| 精品在线一区二区三区| 国产精品偷拍| 色噜噜狠狠一区二区三区| 3751色影院一区二区三区| 一个色综合网| 在线中文字幕观看| 成人免费看片视频| 好吊成人免视频| 图片小说视频色综合| 国产在线制服美女| 国产情人节一区| 精品成人av一区| 99久久精品网| 经典三级在线| 国产一区二区不卡视频| 狠狠做深爱婷婷久久综合一区| 性欧美lx╳lx╳| 狠狠干婷婷色| 国产在线拍偷自揄拍精品| 亚洲妇女屁股眼交7| 国产精品国产三级国产在线观看| 最新国产在线| 91麻豆精品秘密入口| 在线免费视频一区二区| 亚洲激情成人| 久草免费在线色站| 91九色国产ts另类人妖| 中文字幕在线精品| 久久精品欧美一区二区三区不卡 | 日韩亚洲精品在线观看| 中文字幕欧美人妻精品一区| 国自产精品手机在线观看视频| 国产精品美女久久久久久2018| 一区二区三区视频免费观看| 无限国产资源| yy111111少妇影院日韩夜片| 日本福利一区二区| 亚洲影院免费| 日本精品在线中文字幕| 超碰在线人人爱| 国产免费一区视频观看免费 | 欧美一区二区三区……| 欧美日韩国产综合视频在线观看| 国内精品久久久久久久影视简单 | 免费国产成人av| 欧美最猛性xxxx| 日韩一区二区福利| 亚洲精品视频一区二区三区| 国产精品久久久久福利| 国产一区二区高清不卡| 日日摸日日碰夜夜爽无码| 男女羞羞电影免费观看| 性开放的欧美大片| 污的网站在线观看| 日韩欧美天堂| 黄色av日韩| 国产日韩精品视频一区| 亚洲一区成人在线| 日韩视频永久免费观看| 欧美高跟鞋交xxxxhd| 亚洲欧美综合一区| 看全色黄大色大片| 最新地址在线观看| 在线观看麻豆蜜桃| 亚洲精品视频一二三区| av不卡在线观看| 亚洲欧美aⅴ...| 久久97精品| 精品色999| 亚洲黄色精品| 日韩三级电影网| 国产盗摄一区二区| 免费成人av| 国产喷白浆一区二区三区| 欧美日韩免费一区二区三区视频 | 91福利电影| 亚洲一区二区三区中文字幕在线观看 | 日韩av卡一卡二| 欧美性色xo影院| 亚洲欧美日韩成人| 免费成人高清视频| 高清欧美性猛交xxxx| 亚洲激情图片| 日韩电影免费| 日韩激情电影免费看| 成人羞羞网站入口免费| 国产精品资源网| 欧美一区二区三区系列电影| 欧美最顶级丰满的aⅴ艳星| 激情亚洲色图| 免费久久一级欧美特大黄| 久久最新免费视频| av大片在线播放| 欧美freesex交免费视频| 久久久天堂av| 亚洲欧美在线高清| 亚洲国产欧美一区二区三区久久| 国产激情一区二区三区在线观看 | 99亚洲一区二区| 国产欧美自拍一区| 后进极品白嫩翘臀在线播放| 最新理论片影院| 亚洲男人av在线| 精品国产91久久久久久老师| 91在线视频在线| 日本aⅴ亚洲精品中文乱码| 精品国产一区二区三区久久久樱花| 中文另类视频| 特级毛片在线| h网站视频在线观看| 手机福利视频欧美| 91最新在线观看| 黄色一级片国产| 日本精品二区| 97人人澡人人爽| 国产欧美日韩精品丝袜高跟鞋| 久久久免费观看| 久久久女人电视剧免费播放下载| 在线观看的日韩av| 亚洲色图二区|