回复
谈一谈鸿蒙系统中的分布式任务调度模块
星蔚星
发布于 2021-10-11 10:47
浏览
0收藏
简介
分布式任务调度模块负责跨设备组件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同。分布式调度模块组成如下图所示:
目录
分布式任务调度源代码目录结构如下表所示:
**表1 **主要源代码目录结构
名称 | 描述 |
---|---|
dmsfwk_lite | 分布式任务调度实现 |
safwk_lite | foundation进程实现 |
其中轻量级分布式任务调度的源代码目录结构如下:
├── BUILD.gn
├── include
│ ├── dmslite.h # 分布式调度对外接口
│ ├── dmslite_check_remote_permission.h # 分布式调度权限管理模块
│ ├── dmslite_famgr.h # 分布式调度FA管理模块
│ ├── dmslite_inner_common.h # 分布式调度内部通用文件
│ ├── dmslite.h # 分布式调度服务实现
│ ├── dmslite_log.h # 日志模块
│ ├── dmslite_parser.h # 分布式消息解析模块
│ ├── dmslite_tlv_common.h # TLV格式数据解析模块
│ └── dmslite_session.h # 跨设备通信收发模块
├── readme.md
├── LICENSE
├── source
├── distributed_schedule_service.c
├── dmslite.c
├── dmslite_check_remote_permission.c
├── dmslite_famgr.c
├── dmslite_msg_parser.c
├── dmslite_tlv_common.c
└── dmslite_session.c
约束
语言限制:C/C++语言
组网环境:必须确保设备在同一个局域网中,主从设备能互相ping通
操作系统限制:OpenHarmony操作系统
远程启动的约束与限制:
- 支持远程启动FA,不支持远程启动SA
- 远程启动前必须确保主设备与从设备间分布式组网成功,否则无法远程启动
使用
- 分布式任务调度模块编译
分布式任务调度模块,其代码所在目录如下:
foundation/distributedschedule/dmsfwk_lite
在针对不同平台进行编译时,需要提前指定目标平台:
hb build
- 主设备程序开发(以拉起FA为例)
构造意图参数want,设置需要启动的远端设备ID,包名,元能力类名信息,以及分布式标志位Want.FLAG_ABILITYSLICE_MULTI_DEVICE以使能分布式启动
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Want;
import ohos.bundle.ElementName;
// 构造want参数
Want want = new Want();
ElementName name = new ElementName(remote_device_id, "ohos.dms.remote_bundle_name", "remote_ability_name");
want.setElement(name); // 将待启动的FA信息添加到Want中
want.setFlags(Want.FLAG_ABILITYSLICE_MULTI_DEVICE); // 设置分布式标记,若不设置将无法使用分布式能力
// 启动远程设备FA
startAbility(want); // 按照Want启动指定FA,want参数命名以实际开发平台API为准
- 预置条件
从设备侧需安装对应包名的FA
- 运行(以拉起FA为例)
执行主设备侧的startAbility即可拉起从设备FA
涉及仓
分布式任务调度子系统
dms_fwk_lite
分类
distributedschedule_dms_fwk_lite-master.zip 205.22K 14次下载
已于2021-10-11 10:47:45修改
赞
收藏
回复
相关推荐