OpenHarmony之分布式软总线

分布式软总线是多设备终端的统一基座,为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。

分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力,主要功能如下:

  • 发现连接:提供基于Wifi、蓝牙等通信方式的设备发现连接能力。
  • 设备组网:提供统一的设备组网和拓扑管理能力,为数据传输提供已组网设备信息。
  • 数据传输:提供数据传输通道,支持消息、字节、流、文件的数据传输能力。

分布式软总线是OpenHarmony重要特性、重要组件之一,是其他分布式子系统的基础,包括分布式数据管理,分布式任务调度,分布式硬件子系统等

架构

目录结构:

分布式软总线框架主要位于 foundation/communication/dsoftbus目录下,其目录结构如下:

shell

//foundation/communication/dsoftbus
├── adapter               # 适配层
│   ├── common            # 适配层管理,网络适配,协议适配等
│   └── default_config	  # 适配层配置
├── components            # 依赖组件
│   ├── mbedtls           # SSL算法库
│   └── nstackx	          # 网络协议库
├── core                  # 核心层
│   ├── adapter           # 适配层接口
│   ├── authentication    # 认证接口
│   ├── bus_center        # 组网代码
│   ├── common            # 通用代码
│   ├── connection        # 连接代码
│   ├── discovery         # 发现代码
│   ├── frame             # 框架代码
│   └── transmission      # 传输代码
├── interfaces            # 对外接口
├── sdk                   # 对外应用sdk
│   ├── bus_center        # 组网
│   ├── discovery         # 发现
│   ├── frame             # 框架
│   └── transmission      # 传输
├── tests                 # 测试代码
└── tools                 # 工具

架构简析

  • SDK:为其他业务提供软总线的能力接口,如发现设备,发布服务,设备连接,远端设备信息获取,时间同步,注册回调接收设备上下线消息,设备信息变更消息;SDK 对外提供 softbus_client.so,头文件均在 interfaces/kits 目录里;
  • Tools:提供 SoftBusDumpDeviceInfo 工具,可以查看本地的设备信息和所有发现的设备信息;
  • Core:软总线的核心实现部分,提供 softbus_server 库,实现 system ability 框架提供系统能力;
    • discovery:提供对网络设备和蓝牙设备的发布,发现,连接的能力,
    • authentication:设备认证模块,对不同类型的连接方式提供不同的认证实现和统一的认证能力,并为分布式设备业务提供 DeviceAuthCallback;设备认证模块依赖//base/security/device_auth/services:deviceauth_sdk 库。认证模块提供认证连接对应的处理,如连接处理(OnConnectResult),数据处理(OnDataReceived),断开处理(OnDisconnected)三个基础入口,提供设备的连接认证能力;
    • connection:提供 ble,br,tcp,p2p 连接方式。连接模块会启动一个后台连接服务,此连接服务提供默认的 tcp,ble,br,p2p 的连接处理接口,服务内部通过一个线程池处理连接的任务;认证模块通过连接模块进行认证连接,同时连接模块也提供回调接口,为业务模块提供数据返回。连接模块就是通过具体的连接业务实现代码为业务模块提供设备连接和信息传输通道;目前主要提供的连接方式为 socket 或者蓝牙两种;其中接口声明在 interface 目录下;
    • transmission:提供消息发送接口,可以发送加密信息或者不加密信息,加密方式根据认证的信息确认,使用认证会话的 key 作为 key 值,加密方式为 aes 加密。
    • bus_center:提供核心的 LNN 本地网络服务接口,包括网络服务发现,连接,服务发布等核心能力,以及设备管理能力。bus_center 作为软总线的管理节点提供本地网络拓扑账本(NetLedger),消息处理回环(BusLooper),事件处理对象(Netlink,Product,Lwip,Wifi,BtState,Driver,ScreenState,DeviceName),网络发现服务(Coap),网络接口(Netif, softbus_feature_config.c 里写死),消息网络构造(NetBuilder),本地网络路由管理(LaneHub),节点地址分配(NodeAddrAllocator)。软总线设计目标为无感的设备互联互通,所以每个标准设备都可以作为一个网络节点也可以作为一个网关,而 bus_center 就是作为网关实现的部分。软总线服务通过收听系统的事件,包括设备事件,网络事件以感知本设备的每一处变化,然后根据变化来决定是否可以感知到周围新的节点设备加入网络,并提供设备认证,连接,传输数据的服务;
    • common:核心部分的基础代码,如 bitmap(位图),dfx(DesignForX,未来设计),json,messagehandler(软总线信令),network(网络频率参数),queue(队列),security(权限认证),property(软总线配置),utils(工具集,timeout,hextobytes,random,等等)
    • frame:框架层,不同类型的系统(小型系统 L0,轻量系统 L1,标准系统 L2)提供不同的对外接口实现;
    • adapter:适配层,目前适配不同的设备类型,如 WiFi,蓝牙等;
  • Adapter:软总线适配层,对不同系统进行裁剪和能力配置,对外部依赖进行包装和调用;
  • Component:组件,mbedtls(SSL 算法库),nstackx(网络协议库,为 coap 提供网络协议服务)

约束

  • 组网设备需在同一局域网中 或者 距离相近的近场设备间。
  • 组网之前,需先完成设备绑定,绑定流程参见安全子系统中说明。
  • 传输完成数据收发之后,业务要主动关闭会话,释放资源。

总结

本文主要记录了分布式软总线的基本概念,架构,以及框架的代码组成介绍,后续实际用上后再记录分布式软总线子系统使用。

为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (Harmony OS)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. 应用开发导读(Java)

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/278604.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣题目学习笔记(OC + Swift)206. 反转链表

206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 方法一、迭代 在遍历链表时,将当前节点的 next\textit{next}next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其…

clickhouse连接工具dbeaver

地址 地址: Download | DBeaver Community 安装 表引擎 表引擎之TinyLog 以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表, 生产环境上作用有限,多用于平时练习测试用。 内存引擎&am…

【教学类-43-03】20231229 N宫格数独3.0(n=1、2、3、4、6、8、9) (ChatGPT AI对话大师生成 回溯算法)

作品展示: 背景需求: 大4班20号说:我不会做这种(九宫格),我做的是小格子的, 他把手工纸翻过来,在反面自己画了矩阵格子。向我展示:“我会做这种!” 原来他会…

小型内衣洗衣机什么牌子好?口碑好的小型洗衣机

想必大家都知道,我们的内衣裤、袜子这些衣物对卫生方面的要求是比较的高,毕竟是贴身的衣物,因此是要分开清洗的,而不能够跟我们其他的大件衣服一起放入到大型洗衣机里进行混洗,很多就选择了分开单独的手洗,…

CENTOS docker拉取私服镜像

概述 docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。 centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。 本文档主要介绍centos系统安装docker和拉取docker私…

ubuntu python播放MP3,wav音频和录音

目录 一.利用pygame(略显麻烦,有时候播放不太正常)1.安装依赖库2.代码 二.利用mpg123(简洁方便,但仅争对mp3)1.安装依赖库2.代码 三.利用sox(简单方便,支持的文件格式多)…

pycharm用Pipenv创建项目

一、pipenv介绍 pipenv是一个python的包管理工具,提供python的各个版本间的管理,各种包管理。官网 pipenv主要有以下特点: pipenv集成了pip,virtualenv两者的功能。pipenv会在项目根目录下创建Pipfile文件用于记录包的版本信息…

gFTP - 多线程 FTP 客户端工具

gFTP - 多线程 FTP 客户端工具 1. Download gFTP2. GUIReferences https://github.com/masneyb/gftp gFTP is a free and open-source multithreaded File Transfer Protocol client program. It is most used on Unix-like systems such as Linux, macOS, and Sony PlayStati…

nginx源码分析-3

这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。 在初始化http连接的函数ngx_http_init_connection中,nginx为http连接初始化了处理请求的回调函数,之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设…

YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)

一、单独一个文件可视化(源码对应utils文件夹下的plots.py文件的plot_results类) from pathlib import Path import matplotlib.pyplot as plt import pandas as pd def plot_results(fileruns/train/exp9/results.csv, dir):# Plot training results.c…

Java IDEA JUnit 单元测试

JUnit是一个开源的 Java 单元测试框架,它使得组织和运行测试代码变得非常简单,利用JUnit可以轻松地编写和执行单元测试,并且可以清楚地看到哪些测试成功,哪些失败 JUnit 还提供了生成测试报告的功能,报告不仅包含测试…

私有部署ELK,搭建自己的日志中心(四)-- kibana展示es的数据

一、说在前面的话 前一篇已把elk的安装连带讲完,本文重在讲述如何在kibana展示es数据。 二、数据的展示 展示es数据库的客户端工具有很多,比如es head插件,但是一说到要查询日志,还是非kibana莫属了。 1、kibana.yml # 服务端…

边缘计算网关:重新定义物联网数据处理

随着物联网(IoT)设备的爆炸式增长,数据处理和分析的需求也在迅速增加。传统的数据处理方式,将所有数据传输到中心服务器进行处理,不仅增加了网络负担,还可能导致数据延迟和安全问题。因此,边缘计…

求解拍频的信号特征

这张图上,时域已经明显产生调幅波的拍频特征。利用宏观的拍频特征可以肉眼识读两个信号的频差: 一秒是69.42个像素。拍频周期是:21.857像素。所以,拍频的周期是:3.7161Hz. 其中一个频率是50Hz,另一个频率…

ACM32F403/F433 12 位多通道国产芯片,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构,支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理,支持单精度FPU处理浮点数据,同时还支持Memory Protection Unit (MPU)用于提升应用的…

【数据结构】七、图

一、概念 图:记为G(V,E) 有向图:每条边都有方向 无向图:边无方向 完全图:每个顶点都与剩下的所有顶点相连 完全有向图有n(n-1)条边;完全无向图有n(n-1)/2条边 带权图:边上标有数值的图 连通图&#…

OpenAI: InstructGPT的简介

OpenAI: InstructGPT paper: 2022.3 Training Language Model to follow instructions with human feedback Model: (1.3B, 6B, 175B) GPT3 一言以蔽之:你们还在刷Benchamrk?我们已经换玩法了!更好的AI才是目标 这里把InstructGPT拆成两个部分&#…

【JavaWeb】day01-HTMLCSS

day01-HTML&CSS HTML 图片标签&#xff1a;<img> src&#xff1a;指定图像URL&#xff08;绝对路径/相对路径&#xff09;width&#xff1a;图像宽度&#xff08;像素/相对于父元素的百分比&#xff09;height&#xff1a;图像高度&#xff08;像素/相对于父元素的百…

STM32CubeMX教程10 RTC 实时时钟 - 周期唤醒、闹钟A/B事件和备份寄存器

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1 、时钟树配置 3.1.2、外设参数配置 3.1.3 、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 …

k8s之陈述式资源管理

1.kubectl命令 kubectl version 查看k8s的版本 kubectl api-resources 查看所有api的资源对象的名称 kubectl cluster-info 查看k8s的集群信息 kubectl get cs 查看master节点的状态 kubectl get pod 查看默认命名空间内的pod的信息 kubectl get ns 查看当前集群所有的命…