鸿蒙子系统解读-分布式任务调度篇

本文深入探讨了鸿蒙系统中的分布式任务调度子系统,介绍了其在系统中的位置、功能和工作原理。分布式调度支持跨设备的应用启动、调用、连接和迁移,确保任务在不同设备间高效运行。文章还详细分析了分布式调度的代码结构和实现,包括服务和特性的初始化、协议报文的接收与解析,以及轻量设备如何拉起FA。
摘要由CSDN通过智能技术生成

鸿蒙子系统解读-分布式任务调度篇

本文作者:江苏润和软件股份有限公司 郎建中

1.总体描述
1.1.总体介绍
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。
下图是分布式调度子系统在整个鸿蒙系统中的位置:
在这里插入图片描述

下图表示分布式调度的示意图:
在这里插入图片描述

从A设备的某个FA(Feature Ability代表有界面的元能力)应用调用设备B上的FA应用。这里的调用的含义包含了:
a、启动和关闭:启动和关闭远程设备上的ability(包括:基于Page的ability、基于Service的ability、基于Data模板的ability)
b、连接和断开:向开发者提供跨设备控制服务的能力。这里的服务表示:基于Server和Data模板的ability。
c、迁移能力:向开发者提供跨设备的业务无缝迁移能力。开发者可以通过基于Page的ability的迁移接口,将本地的业务迁移到指定的设备中。

1.2.分布式调度中的两种设备
在分布式调度中,存在两个角色。按照上图有设备A和设备B。一般来说设备A是指智慧屏设备,设备B只一般的轻量设备。智慧屏设备一般指智能TV、手机等。轻量设备一般只Camera、手表等
下面图示表示这两种设备的系统架构图:
在这里插入图片描述
(约束:如果要实现分布式调度,目前智慧屏设备和轻量设备必须处于同一个局域网段内)
从鸿蒙系统的整体系统框架图可以看出,分布式调度子系统及周边的依赖模块如下图:
在这里插入图片描述

1.3.分布式调度代码示例–启动远程FA
1.3.1.智慧屏上的代码示例
1.获取目标在线从设备的设备ID

// 引入设备选择头文件
import ohos.distributedschedule.interwork.DeviceInfo;
import ohos.distributedschedule.interwork.DeviceManager;


// 获取在线设备列表
List<DeviceInfo> deviceInfoListOnline = DeviceManager.getDmsDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE);
String remote_device_id;
if (deviceInfoListOnline.size() > 0)
{
   
    remote_device_id = deviceInfoListOnline[0].GetDeviceId(); // 获取在线列表中第一台设备的设备ID
}

2.构造want,首先使用ElementName类表明需要启动的远端设备ID,包名,元能力类名,传入want中,然后设置want中的分布式标志位Want.FLAG_ABILITYSLICE_MULTI_DEVICE表示需要远程启动

// 引入相关头文件
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Want;
import ohos.bundle.ElementName;


// 启动远程设备FA
Want want = new Want(); 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值