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

OpenHarmony 源碼解析之分布式任務調度(一)

開發 前端 分布式
為了更全面地理解與掌握分布式任務調度子系統,我先從分布式遠程啟動這個簡單的功能開始,利用開源鴻蒙開放的源代碼,進行深入學習。

[[434413]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

鴻蒙系統(HarmonyOS)支持在本地程序里調起遠程任務,這個功能是更底層的分布式任務調度子系統支撐的,并且已經貢獻到開源鴻蒙(OpenHarmony)代碼里。為了更全面地理解與掌握分布式任務調度子系統,我先從分布式遠程啟動這個簡單的功能開始,利用開源鴻蒙開放的源代碼,進行深入學習。

以下行文如無特別說明,所述說的鴻蒙系統均指開源鴻蒙系統(OpenHarmony 3.0 LTS版本)。

#星光計劃1.0# OpenHarmony 源碼解析之分布式任務調度(一)-鴻蒙HarmonyOS技術社區

OpenHarmony 架構圖

概述

先從開源鴻蒙文檔入手:

分布式任務調度模塊,通過主從設備服務代理機制,在OpenHarmony操作系統上建立起分布式服務平臺,支持主設備(搭載OpenHarmony的智慧屏設備)啟動從設備(IP Camera、運動手表等小內存OpenHarmony設備)FA的能力。

以智慧屏節目開播提醒為例,智慧屏上在喜歡的節目菜單中,點擊“開播后提醒我”按鈕,等節目開播后,智慧屏會拉起運動手表上的節目開播提醒FA。通過該FA用戶可以快速知道喜歡的節目已經開始,達到協同互助的作用。

FA : Feature Ability代表有界面的Ability,用于與用戶進行交互。

遠程啟動:即跨設備啟動FA,與本地啟動FA相對應。

開源鴻蒙系統里的應用程序以Ability為單位,分為FA和PA, 可以簡單理解為FA就是有界面的應用程序。

分布式服務平臺

分布式任務調度的前提,是設備必須建立分布式服務平臺,并且注冊自身能力。

開源鴻蒙支持3種體量的設備:輕量、小型、標準。

在標準設備里,開源鴻蒙默認已經開啟了分布式服務平臺,開發者一般無需做額外工作,即可使用分布式任務調度功能。

而輕量和小型設備則需要自行在啟動代碼中實現分布式服務平臺功能調用,具體可以參考【分布式軟總線子系統】。相關代碼倉及調用API可以參考:【分布式軟總線】【分布式軟總線lite】

同一個局域網

在上述代碼倉的說明中,一再強調了:

需要保證發現端設備與被發現端設備在同一個局域網內

是因為目前開源鴻蒙系統使用了coap協議,并且暫時只支持coap協議。從源代碼中可以看到,以后應該會擴展到BLE、USB等方式。

  1. /** 
  2.  * @brief Enumerates media, such as Bluetooth, Wi-Fi and USB, used for publishing services. 
  3.  * 
  4.  * Currently, the media can only be set to coap. 
  5.  * 
  6.  */ 
  7. typedef enum { 
  8.     /** Automatic medium selection */ 
  9.     AUTO = 0, 
  10.     /** Bluetooth */ 
  11.     BLE = 1, 
  12.     /** Wi-Fi */ 
  13.     COAP = 2, 
  14.     /** USB */ 
  15.     USB = 3, 
  16. } ExchangeMedium; 

 開源鴻蒙的coap協議默認使用的端口是5684,在局域網通過udp廣播方式發布。如果調試過程中找不到設備,可以通過這個端口抓包分析。

  1. #define COAP_DEFAULT_PORT 5684 

分布式任務調度流程

手頭正好有兩塊支持開源鴻蒙標準系統的開發板Hi3516D,因此以標準系統的分布式任務調度為例,說明開源鴻蒙系統的分布式任務調度流程。輕量系統和小型系統除了開發語言不同,基本步驟是一致的。

開源鴻蒙系統開發FA目前只支持js/eTS語言。

這個demo參考了分布式計算器,為說明方便,做了大量簡化處理,并且此處忽略了錯誤處理。

具體api參考代碼倉:DeviceManager組件。

步驟1:創建設備管理器

  1. import deviceManager from '@ohos.distributedHardware.deviceManager'
  2.  
  3. let self = this; 
  4. deviceManager.createDeviceManager("com.example.myapplication", (err, val)=>{self.deviceManager_ = val;}); 

 使用DeviceManager相關接口之前,需要通過createDeviceManager接口創建DeviceManager實例;

步驟2:獲取可信設備列表

  1. var array = this.deviceManager_.getTrustedDeviceListSync(); 

步驟3:注冊周邊設備動態監控回調函數

  1. this.deviceManager_.on('deviceFound', (data) => { 
  2.     let extraInfo = { 
  3.         "targetPkgName"'com.example.myapplication'
  4.         "appName"'分布式例子'
  5.         "appDescription"'一個簡單的分布式例子'
  6.         "business"'0' 
  7.     }; 
  8.     let authParam = { 
  9.         "authType": 1, 
  10.         "appIcon"''
  11.         "appThumbnail"''
  12.         "extraInfo": extraInfo 
  13.     }; 
  14.     self.deviceManager_.authenticateDevice(data.device, authParam, (err) => { ... }); 
  15. }); 
  16. this.deviceManager_.on('deviceStateChange', (data) => { ... }); 

步驟4:發現周邊新設備,并認證

  1. SUBSCRIBE_ID = Math.floor(65536 * Math.random()); 
  2. var info = { 
  3.     subscribeId: SUBSCRIBE_ID, 
  4.     mode: 0xAA, 
  5.     medium: 2, 
  6.     freq: 2, 
  7.     isSameAccount: false
  8.     isWakeRemote: true
  9.     capability: 0 
  10. }; 
  11. this.deviceManager_.startDeviceDiscover(info); 

新設備需要認證才能互聯使用。開源鴻蒙系統沒有用戶注冊機制,因此認證需要另外開發框架支持,開源鴻蒙在標準系統提供了一個簡單的HAP程序支持彈窗PIN碼認證機制,可以簡單使用。

當前版本只支持PIN碼認證,需要提供PIN碼認證的授權提示界面、PIN碼顯示界面、PIN碼輸入界面;

當前,由于系統通過native層直接進行彈窗的能力尚不具備,這里使用一個臨時的FA來進行對應界面的彈窗。

該FA為:DeviceManager_UI.hap,作為系統應用進行預置。

具體行為是:

  1. 遠程設備在屏幕顯示一個巨大的6位數字PIN碼
  2. 控制設備彈出一個PIN碼輸入窗口
  3. 用戶在控制設備輸入遠程設備所顯示的PIN碼,通過驗證即可繼續遠程控制
  4. PIN碼輸入成功后,該設備成為可信設備存儲于系統,下次再次連接時不需要再次驗證

步驟5:遠程調用FA

以上步驟1~步驟4是標準的周圍設備管理步驟,因此可以封裝成函數庫,方便后續使用。

在獲取到可信設備數組后,可以在適當的彈窗或者選擇界面,讓用戶選擇其中一個進行連接。

  1. findDevices: function(){ 
  2.       let self = this; 
  3.       this.remoteDevices.registerDeviceListCallback(() => { 
  4.           var list = new Array(); 
  5.           var devs = self.remoteDevices.deviceList; 
  6.           console.info('myapplication: on remote device updated, count=' + devs.length); 
  7.           for (var i = 0; i < devs.length; i++) { 
  8.               console.info('myapplication: device ' + i + '/' + devs.length + 
  9.               ' deviceId=' + devs[i].deviceId + ' deviceName=' + devs[i].deviceName 
  10.               + ' deviceType=' + devs[i].deviceType); 
  11.               list[i + 1] = { 
  12.                   name: devs[i].deviceName, 
  13.                   did:  devs[i].deviceId 
  14.               }; 
  15.           } 
  16.           self.devList = list; 
  17.       }); 
  18.   }, 

啟動遠程FA的程序:

  1. import featureAbility from '@ohos.ability.featureability'
  2.  
  3. ...... 
  4.  
  5. featureAbility.startAbility({ 
  6.     want:{ 
  7.         bundleName: 'com.example.myapplication'
  8.         abilityName: 'com.example.myapplication.MainAbility'
  9.         deviceId: this.devList[idx].did, 
  10.         parameters: { 
  11.             isFA: 'FA' 
  12.         } 
  13.     } 
  14. }).then((data)=>{ 
  15.     console.log("myapplication: start ability finished:" + JSON.stringify(data)); 
  16. }); 

 遠程設備收到請求后,就會以對應的參數啟動相應的FA,并且在啟動時可以獲取到參數:

  1. onReady() { 
  2.     featureAbility.getWant((error, want) => { 
  3.         console.info('myapplication: featureAbility.getWant =' + JSON.stringify(want.parameters)); 
  4.         // 這里isFA就是上面遠程請求的參數 
  5.         if (want.parameters.isFA && want.parameters.isFA === 'FA') { 
  6.             this.initKVManager(()=>{ 
  7.                 console.log('myapplication: kvmanager started.'
  8.             }); 
  9.         } 
  10.         else
  11.             this.findDevices(); 
  12.         } 
  13.     }); 
  14.  
  15. }, 

 具體api可以參考華為鴻蒙開發文檔,請注意里面部分內容可能與開源鴻蒙系統有區別,請自行確定。

編譯運行

以上步驟,均已在DevEco Studio 3.0.0.600 x64中編寫成功,并且在兩臺Hi3516D設備間成功運行,附代碼(分布式遠程啟動.zip)。

想在開源鴻蒙系統上安裝HAP程序,必須要先進行簽名,并且在DevEco Studio中進行相關設置。具體步驟參考開源鴻蒙文檔。

上傳安裝HAP程序,需要使用開發工具hdc,具體參考文檔。

小結

開源鴻蒙系統的分布式任務調度基本功能已經初步完善了,使用文檔比較分散,需要到各個子系統去查閱,略有不便。

下一步,學習一下分布式軟總線、分布式數據,看看開源鴻蒙系統是如何封裝應用之間數據交互能力的。

另外看源代碼,開源鴻蒙系統已經有分布式應用流轉(遷移)運行功能,有時間可以學習一下。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

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

2020-09-29 19:20:05

鴻蒙

2020-11-06 12:12:35

HarmonyOS

2021-12-14 10:16:00

鴻蒙HarmonyOS應用

2022-06-20 15:32:55

Stage模型分布式開發

2023-06-26 00:14:28

Openjob分布式任務

2023-05-08 16:38:46

任務調度分布式任務調度

2022-07-27 14:30:15

分布式數據鴻蒙

2024-09-23 04:00:00

java架構分布式系統

2022-06-13 07:43:21

分布式Spring

2023-02-11 00:04:17

分布式系統安全

2019-11-15 10:16:27

分布式任務框架

2024-01-08 08:05:08

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

2023-02-20 15:38:38

2023-02-20 15:29:14

分布式相機鴻蒙

2023-02-21 16:41:41

分布式相機鴻蒙

2021-08-06 08:33:27

Springboot分布式Seata

2021-09-07 10:43:25

EverDB分布式執行

2015-05-20 15:54:04

Openstack分布式存儲

2025-05-13 03:22:00

2024-01-09 08:00:58

點贊
收藏

51CTO技術棧公眾號

午夜精品免费在线观看| 国产美女直播视频一区| 你懂的视频欧美| 在线视频一二三区| 亚洲精品av在线播放| 成人免费在线播放| 日日噜噜噜噜久久久精品毛片| 国产精品一区二区三区成人| 日韩网站在线看片你懂的| 久久精品视频一区| 免费欧美日韩国产三级电影| 亚洲小说欧美另类婷婷| 污视频网站在线| 欧洲美女免费图片一区| 久久人人爽人人爽人人片av高请 | 成人午夜影院| 成人在线视频一区二区三区| 中文字幕av日韩精品| 久久久久久九九九九| av在线不卡一区| 97婷婷涩涩精品一区| 亚洲精品一区二区网址| 日本久久一区二区| thepron国产精品| 中文av一区| 精品一区免费| 国产一区一区| 欧美大片网站| 五月天激情在线| 久草资源站在线观看| 韩国精品一区二区三区六区色诱| 久久精品国产一区二区三区| 国产乱码精品一区二区三| 激情视频网站在线播放色| 国产一级大片免费看| 日韩在线视频免费观看| 26uuu国产日韩综合| 国产在线播放精品| 资源视频在线播放免费| 99re热精品| 欧美va亚洲va香蕉在线| 国产精品91xxx| 久久香蕉网站| 日本中文字幕电影在线观看| 久久久久久久久久久久久久一区 | 美女亚洲精品| 精品视频www| 国产视频一区二区三区在线观看| 亚洲人成网亚洲欧洲无码| 日本人妖在线| 亚洲天堂电影网| 久久亚洲精品小早川怜子66| 亚洲精品水蜜桃| 欧美日韩国产探花| 久草成色在线| wwwxxx黄色片| 成人福利网站在线观看11| 欧美一区二区三区影视| 不卡av在线免费观看| 国产精品手机在线播放| av午夜在线| 久久久久免费看黄a片app| 国产a级全部精品| 欧美日韩免费高清一区色橹橹| 国产综合色产在线精品| 操欧美女人视频| 午夜在线免费观看视频| 免费看一级大黄情大片| 91久久嫩草影院一区二区| 亚洲国产精品字幕| 亚洲欧洲国产专区| 日韩中文字幕一区二区三区| 国产欧美视频在线| 国产原创av在线| 欧日韩免费视频| 国产综合久久久久| 亚洲人成绝费网站色www| 一区二区三区四区国产精品| 日本特黄久久久高潮| 国产精品香蕉| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美日韩亚洲自拍| 欧洲一区二区在线| 欧洲成人在线视频| 亚洲第一视频网| 亚洲大片一区二区三区| 国产精品一区二区91| 99久久亚洲精品| 韩国精品视频在线观看| 激情在线视频| 老头吃奶性行交视频| 欧美一区少妇| 国产精品狠色婷| 夜夜嗨av一区二区三区四区 | 日韩毛片在线看| 亚洲成人午夜电影| 国产99一区视频免费| 亚洲先锋影音| 天堂va欧美ⅴa亚洲va一国产| 男人资源在线播放| jlzzjlzz欧美| 九九久久九九久久| 国产伦精品一区二区三区| 久久久久成人精品| 日韩www在线| 欧美午夜片在线免费观看| 久久精品欧美一区二区三区麻豆| 日本网站在线观看一区二区三区| 青青草综合网| 九色精品蝌蚪| 久草在线资源福利站| 韩国三级av在线免费观看| 久久这里只精品| a级网站在线观看| 激情小说综合区| 国产精品青青在线观看爽香蕉| 日韩一区二区欧美| 精品精品国产高清a毛片牛牛| 色婷婷久久久综合中文字幕| 中文字幕一区二区视频| 成人黄色777网| 爽爽淫人综合网网站| 欧美日韩天堂| 国产一区二区三区电影在线观看| 99久久久成人国产精品| 乱人伦视频在线| 2024短剧网剧在线观看| 精品av中文字幕在线毛片| 制服丝袜中文字幕在线观看| 无码aⅴ精品一区二区三区浪潮| 天天干天天操天天干天天操| 精品欧美国产一区二区三区不卡| 国产女精品视频网站免费| 668精品在线视频| 欧美精品999| 欧美精品一本久久男人的天堂| 精品无码久久久久久国产| 日韩欧美黄色影院| 欧美另类videos死尸| 欧美亚一区二区| 91黄色激情网站| 欧美丝袜第一区| 精品免费在线视频| 亚洲国产成人精品视频| 亚洲另类春色国产| 成人欧美一区二区三区视频网页| 久久久国产精华| 久久男人中文字幕资源站| 99re6这里只有精品视频在线观看| 国产成人亚洲综合a∨婷婷图片| 久久99精品一区二区三区| 日本免费新一区视频| 日本欧美加勒比视频| 日韩av不卡在线观看| 免费成人av资源网| 蜜桃视频一区二区三区| 蜜臀久久99精品久久久久宅男| 日韩av网站免费在线| 美腿丝袜亚洲一区| 黄色资源网久久资源365| 国产一区亚洲一区| 国产99精品视频| wwwwxxxxx欧美| 国产精品久久久久久久午夜片 | 在线播放三级网站| 国产女王在线**视频| 在线国产三级| 东凛在线观看| 免费a级毛片在线播放| av网址在线免费观看| 欧美高清另类hdvideosexjaⅴ| 色操视频在线| 自拍偷拍欧美视频| 日韩久久一区| 噜噜噜天天躁狠狠躁夜夜精品| 欧美另类69xxxxx| 在线观看日韩| 久久一二三区| 国产精品1区2区| 久久色成人在线| 亚洲精品高清在线| 欧美最猛黑人xxxxx猛交| 日韩免费在线观看| 中文国产亚洲喷潮| 欧美精品www| 成人网在线观看| 欧美一区二区三区在线播放| 伊人久久在线观看| 国产成人久久婷婷精品流白浆| 成人拍拍拍免费视频网站| 黄页视频在线观看| 在线观看精品一区二区三区| 51漫画成人app入口| 自拍偷拍亚洲图片| 成人a'v在线播放| 久久影院亚洲| 久久久久久影视| 午夜精品成人在线| 亚洲大胆人体av| 久久久久久亚洲精品中文字幕|