Openharmony 开源鸿蒙北向开辟——分布式软总线技术——1.工作原理 ...

海哥  论坛元老 | 2025-3-31 02:48:37 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1572|帖子 1572|积分 4716

一、题目

        我们在使用电子设备的时候,经常遇到的环境,多个设备之间想要共享数据,发现会非常麻烦。好比说两个手机传送文件,必要毗连网络,必要登录软件,必要选择文件,必要发送,想想就累。

        再麻烦一点,我家里有智能家居,我当然希望我回到家,全部的设备可以直接毗连上我的手机,我可以随时获取他们的信息,然后可以发送,设定数据给全部的电器。但我不希望我回到家后,花上半个小时一个个毗连。

        你说你不怕麻烦?

        OK,那假设你的智能手表不具有WiFi功能,只有蓝牙,而你的电脑没有蓝牙功能。

        叨教他们之间如何传输数据?

        这个时候也简朴,我们的手机蓝牙和wifi不是都有吗?

        那么我们可以手动的,用手机从手表取出数据,发送给电脑。

        嗯,累不累?

二、解决方法

        这咋办呢?有没有一个方法,可以让我的设备之间本身组网,本身举行数据交互,还可以兼容各种不同的设备,各种通讯形式?

        有的,有的。

        这就是分布式软总线技术。

三、分布式软总线技术介绍

        分布式软总线技术,顾名思义,分布式的软的总线。我们挨个拆解

        3.1、什么是总线?

                实在这个概念是从计算机中引入的,计算机中有很多的设备,必要举行数据通讯和任务通讯,为了解决这个题目,于是就出现了总线技术。

                总线就像计算机内部的 “超级高速公路”,专门负责让 CPU、存储器、各种控制器(如键盘控制器、硬盘控制卡等)之间顺畅沟通。在下图中

                图里的 CMOS 存储器、显示器控制卡、USB 控制卡等设备,都靠这三条 “路” 和 CPU 毗连,就像都会里的建筑通过公路、交通讯号体系协作,最终让计算机各部件高效配合,举行数据通讯,完成各种任务。

        3.2、什么是软总线?

                计算机中的总线是电路搭建起来的硬件电路。

                而软总线通过软件代码、协议算法构建 “虚拟通道”,不依赖计算机硬件总线那样固定的物理电路(如主板上的地址线、数据线等硬件线路),也无需设备统一物理接口,这是 “软” 的焦点体现。

3.3、什么是分布式?

        可以看到计算机总线中,全部的数据都是流向CPU,大概从CPU流出,此时,CPU就是中央设备。而分布式的意思是,全部的设备等级平行,数据可以通过这条总线总线在任意两条设备之间活动。

四、实现原理

        假设我们有A,B,C,D,E五个设备

        其中A,B,C支持wifi与蓝牙,D只有wifi,E只有蓝牙,且E毗连C。

        此时全部的设备都在一个局域网下。

        如何让他们自行组网呢?

        那么重要有以下几个过程

4.1、设备发现

1. 多协议广播发现

        - A/B/C 设备:
                同时开启蓝牙广播(BLE)和WiFi UDP 广播,发送包含设备 ID、IP 地址、支持协议(WiFi/BT)的数据包。
        - D 设备:
                 仅通过 WiFi 发送 UDP 广播,携带自身 IP 和 “仅支持 WiFi” 标识。
        - E 设备:
                仅通过蓝牙广播设备 ID 和 “仅支持蓝牙” 标识。
2.毗连信息存储

           每个设备维护一个当地设备目录,记录自身支持的协议能发现的全部设备的 ID、IP、协议范例等信息。
        比方:D 的当地目录中没有 E 的信息,因为 D 无法接收蓝牙广播。
3. 焦点设备选择

        动态推举主节点:
                 A/B/C 中选择一个作为主节点(如 A),负责维护全局设备列表和各个设备的信息。
                 推举依据:CPU 性能、电量、网络稳定性(如优先选择 A,因 A 已毗连 E)。
4.2、设备毗连

        1.直接毗连

                - 当其中一个设备(如 B)必要与另一个设备(如 C)举行数据交互时,B 根据当地设备目录中记录的 C 的 IP 地址,通过 WiFi 网络向 C 发起 TCP 或 UDP 毗连哀求。比方,如果是文件传输大概使用 TCP 协议保证数据的可靠传输;如果是实时性要求高的音视频流传输大概使用 UDP 协议减少延长。

        2.跨协议设备间的毗连

                - D 必要与 E 举行数据交互时,由于 D 的当地设备目录中没有 E 的信息(D不支持蓝牙),但 D 知道主节点 A 的信息(因为在设备发现阶段 D 发现了 A)。D 根据当地目录中记录的 A 的 IP 地址,通过 WiFi 网络向 A 发送数据交互哀求,哀求中包含目标设备 E 的 ID。
                - 主节点处理:主节点 A 接收到 D 的哀求后,在其维护的全局设备列表中查找 E 的信息,发现 E 是仅支持蓝牙的设备。
                - 信息查询:主节点 A 接收到 D 的哀求后,在其维护的全局设备列表中查找 E 的信息,得知 E 已通过蓝牙毗连到 C。
        - 路径规划:A 根据网络状态和设备状态,规划出 D 与 E 之间的通讯路径,即 D→A→C→E。
                - 这里要注意,任何一种跨协议的数据传输都必要颠末A,因为主节点 A 是唯一把握全局设备列表和协议转换本领的节点,无主节点参与时,设备无法辨认跨协议目标。

4.3、数据交互

        1.直接毗连

        -         数据传输:毗连建立乐成后,B 将数据封装成符合对应协议格式的数据包,通过 WiFi 网络发送给 C,C 接收到数据包后举行解包和处理。

        2.跨协议设备间的毗连

                - D 到 A:D 将必要传输的数据封装成符合 WiFi 协议格式的数据包,通过 WiFi 网络发送给 A。
                - A 到 C:主节点 A 接收到 D 发送的数据包后,对其举行解析,然后根据 C 的 IP 地址(或其他标识信息),将数据重新封装成适当在网络中传输的格式,通过 WiFi 网络发送给 C。
                - C 到 E:C 接收到 A 发送的数据后,将其从 WiFi 协议格式转换为蓝牙协议格式,再通过之前建立的蓝牙毗连将数据包发送给 E。

4.4、设备退出

        1、主动退出流程

        当设备要主动退出网络时,需按以下步骤操作:    

                1.发送退出关照

                - 具备多协议的设备(A/B/C):会同时借助蓝牙和 WiFi 这两种方式,广播带有自身 ID 的退出消息。
                - 仅支持 WiFi 的设备(D):通过 UDP 广播发送退出关照。
                - 仅支持蓝牙的设备(E):利用蓝牙广播宣告退出。
                2.主节点处理
                - 主节点(比方 A)在接收到设备的退出关照后,会从全局设备列表中将该设备的信息删除。
                - 主节点会立刻天生一个包含更新后信息的新的全局设备列表。
                3.全网同步
                - 主节点通过多协议广播的形式,把更新后的全局设备列表发送给全部在线的设备。
                - 其他设备收到新的全局设备列表后,会对各自的当地设备目录举行更新。
                4.断开毗连
                - 全部与退出设备有直接毗连的设备,会主动关闭相干的 TCP/UDP 毗连大概蓝牙毗连。
                - 举例来说,如果 D 之前和 C 有毗连,那么 D 会主动断开与 C 的 WiFi 毗连。

        2、异常退出处理

        当设备出现异常退出环境(如断电、网络突然停止)时,按以下方式处理:

                1.检测异常
                - 主节点会定期对设备举行存活检测,好比通过发送心跳包。
                - 当设备在规定的时间内(比方 30 秒)没有响应心跳包时,就会被判定为异常退出。
                2.触发主动退出流程
                - 主节点会模拟设备主动退出的流程,从全局设备列表中删除该设备,并将更新后的列表同步给其他设备。
                3.跨协议毗连调整
                - 若 E 原本通过 C 毗连到网络,而 C 异常退出,那么 E 必要重新搜索可毗连的蓝牙设备,如 A 或 B。
                - E 乐成毗连到新的设备后,新的设备会将 E 的信息上报给主节点,主节点会更新全局设备列表。

        3、主节点退出特殊流程

        当主节点(如 A)退出网络时,会触发以下操作:
                1.启动新主节点推举
                - 剩余的 A/B/C 设备会依据之前设定的推举依据(如 CPU 性能、电量、网络稳定性),重新推举出一个新的主节点,比方 B。
                - 新主节点会天生一个全新的全局设备列表。
                2.跨协议通讯规复
                - 新主节点会重新建立与其他设备的毗连,以确保跨协议通讯可以或许正常举行。
                - 比方,D 必要通过新主节点 B 与 E 举行通讯。
                3.旧主节点资源释放
                - 全部设备会主动删除与旧主节点(A)相干的毗连信息。

4.4、新参加设备

        1. 新设备广播

                - 协议匹配:新设备根据自身支持的协议(WiFi/BT)发送广播
                双协议设备:同时发送 BLE 广播和 WiFi UDP 广播
                单协议设备:仅发送对应协议广播
                - 广播内容:设备 ID、支持的协议范例、IP 地址(WiFi 设备)、设备本领参数(如 CPU 性能、电量等)

        2. 现有设备发现

                - 多协议监听:
                - A/B/C 设备同时接收蓝牙和 WiFi 广播
                - D 设备仅接收 WiFi 广播
                - E 设备仅接收蓝牙广播
                - 信息初步存储:
                - 各设备将发现的新设备信息暂存到当地临时目录
                - 比方:D 发现新设备 F(WiFi),会记录 F 的 IP 和协议范例

        3. 主节点信息网络

                - 主动上报:
                - 全部设备(包括新设备)在发现新节点后,立刻向主节点 A 发送更新哀求
                - 新设备 F 会主动向主节点 A 发送自身完备信息
                - 信息验证:
                - 主节点 A 通过多源数据校验(如对比 WiFi 和蓝牙广播的 ID 一致性)
                - 验证新设备的协议支持环境和网络可达性

        4. 全局设备列表更新

                - 主节点处理:
                -.将新设备 F 参加全局设备列表
                -.记录其协议范例、IP 地址、设备本领参数
                -.标志设备状态(如是否支持协议转换)
                - 信息同步:
                - 主节点 A 通过 WiFi 多播向全网设备发送更新关照
                - 各设备根据更新内容同步当地目录
                - 比方:E 设备通过 C 的蓝牙毗连获取新设备信息

        5. 主节点重新推举(可选)

                - 触发条件:
                - 新设备 F 的 CPU 性能 / 电量 / 网络稳定性优于当前主节点 A
                - 主节点 A 主动发起推举(如检测到自身资源不敷)
                - 推举过程:
                主节点 A 广播推举哀求
                全部候选设备(A/B/C/F)上报自身参数
                全网设备投票选出最优设备
                新主节点初始化全局设备列表

        6. 毗连建立与路径更新

                - 直接毗连:
                - 同类协议设备可直接建立毗连(如 F 与 D 通过 WiFi 毗连)
                - 双协议设备优先选择最优协议毗连(如 F 与 C 优先用 WiFi)
                - 跨协议路径更新:
                - 主节点 A 根据新设备位置重新规划路径
                - 比方:新增 F→A→C→E 的传输路径
                - 旧有路径(如 D→A→C→E)保持可用

        7. 网络优化

                - 负载平衡:
                - 主节点 A 根据设备负载动态分配流量
                - 比方:若 F 的 WiFi 带宽更高,将部分 D→C 的流量转移到 F
                - 冗余路径:
                - 自动天生备用路径(如 F→B→C→E)
                 当主路径故障时自动切换

        特殊场景处理

                1.仅蓝牙设备参加:
                - 必须通过现有蓝牙节点(如 C/E)间接接入
                - 主节点 A 通过 C 的蓝牙毗连获取该设备信息
                2.多主节点辩论:
                - 通过设备 ID 哈希值举行辩论检测
                - 哈希值较小的设备自动降级为从节点
                3.协议扩展:
                - 新增协议设备(如 ZigBee)需先毗连到桥接设备
                - 桥接设备向主节点注册协议转换本领
当然,上述过程均由分布式软总线技术实现,无需人工干预,我们只必要在手机上点击即可。

五、相干代码

分布式软中线代码堆栈地址如下:


  • communication_interfaces_kits_softbuskit_lite
https://gitee.com/openharmony/communication_interfaces_kits_softbuskit_lite


  • communication_services_softbus_lite
https://gitee.com/openharmony/communication_services_softbus_lite

为省去篇幅,本篇暂时不讲代码,下一篇开启代码以及测试教程。

六、总结

        6.1、结构分层

        这个过程中,我们将整个网络可以分为三:应用层,网络层,链路层


其中每一层的功能如下

 应用层(你直接用的功能)


  • 就像你手机里的「文件传输」APP 或「智能家居控制」界面
  • 你点一下「传文件」或「开空调」,这就是应用层在工作
  • 它只关心「要传什么」和「要控制什么」,不关心怎么传已往
网络层(幕后的快递调度中央)


  • 类似快递公司的总调度室
  • 当你要从手机传文件到电脑(不管是蓝牙照旧 WiFi),它会:
  • 就像你网购时,快递体系自动帮你选顺丰陆运照旧空运
链路层(详细的运输门路)


  • 就像现实中的高速公路、乡村土路等不同门路范例
  • 决定数据用什么「交通工具」传输:   

    • 蓝牙:适当短距离、低功耗的「电动车」(好比传照片到智能手表)
    • WiFi:适当中距离、高速的「卡车」(好比传视频到电视)
    • 未来大概支持的 5G/zigbee 等,就是更高级的「高铁」「飞机」

  • 这些门路可以同时存在,体系会根据环境自动切换
举个例子

你用手机给空调发指令「制冷」:


  • 应用层:你在 APP 点「制冷」
  • 网络层:自动找到空调的位置,发现空调只支持 WiFi,而手机同时有 WiFi 和蓝牙,于是规划路径:手机 WiFi→路由器→空调 WiFi
  • 链路层:数据通过 WiFi「卡车」运输,中间不必要你操作蓝牙或连热点
6.2、技术特点

如此我们便实现所需的需求,即满足设备的数据之间共享。

其技术重要有以下特点

本文为本人查阅资料后编写,才疏学浅,如有错误,请提出宝贵意见,即可更改。

参考资料

1.https://www.cnblogs.com/rxwest/p/14290923.html

2.华为开辟者文章




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表