ITPub博客

首页 > 数据库 > 数据库开发技术 > 分布式软总线组网模块

分布式软总线组网模块

数据库开发技术 作者:96tlq4q9 时间:2026-08-06 20:00:12 0 删除 编辑

一、概述

LNN(Local Nearest Neighbor)组网模块是DSoftBus分布式软总线系统的协调中枢,位于core/bus_center/lnn/目录下。它不直接参与设备发现、物理连接建立或数据传输,而是负责网络拓扑管理、节点状态维护、通道选择分配和主节点选举等协调工作。

核心定位:LNN是整个DSoftBus架构中的"编排协调层",对上承接Transmission传输请求,对下调用Connection建立物理通道、调用Authentication完成设备认证。

二、模块架构总览 

2.1 目录结构

2.2 核心子模块职责

子模块路径核心职责关键文件
Net Builderlnn/net_builder/网络构建、连接FSM、拓扑管理lnn_net_builder.c、lnn_connection_fsm.c
Net Ledgerlnn/net_ledger/节点信息存储、本地/分布式账本lnn_node_info.h、lnn_net_ledger.h
Net BusCenterlnn/net_buscenter/网络协议调度、物理子网抽象lnn_network_manager.c
Lane Hublnn/lane_hub/通道选择、评分、分配、心跳lnn_lane.c、lnn_lane_select.c
Disc Mgrlnn/disc_mgr/LNN内部的CoAP发现封装lnn_discovery_manager.c
Decision Centerlnn/decision_center/网络决策策略lnn_decision_center.h
Meta Nodelnn/meta_node/元节点管理lnn_meta_node_interface.h

三、详细设计分析

3.1 接口层(Bus Center Manager)

文件: core/bus_center/interface/bus_center_manager.h

职责: 作为LNN模块的对外统一接口,提供节点管理、信息查询、组网操作等API。

核心API分类:

设计特点:

  • 封装Discovery模块: 对外隐藏发现细节,提供统一的发布/订阅接口
  • 键值对信息管理: 通过InfoKey枚举定义信息类型,支持字符串、数字、字节等多种数据类型
  • 通道属性抽象: 定义LnnLaneProperty区分不同类型的通道(消息、字节、文件、流媒体)

3.2 网络构建器(Net Builder)

文件路径: core/bus_center/lnn/net_builder/

核心职责: 负责设备加入网络(Join)、离开网络(Leave)、连接状态机管理、拓扑信息同步。

3.2.1 连接有限状态机(Connection FSM)

文件: lnn_connection_fsm.c

设计模式: 采用**有限状态机(FSM - Finite State Machine)**管理设备连接的生命周期。

状态定义:

状态转换图:

连接标志位(Flag):

在线类型(OnlineType):

3.2.2 主节点选举(Master Election)

文件: lnn_net_builder.c - UpdateLocalMasterNode()

选举机制: 基于**节点权重(Node Weight)**的选主算法,权重高的节点当选为主节点。

选举消息同步:

3.3 网络账本(Net Ledger)

文件路径: core/bus_center/lnn/net_ledger/

核心职责: 作为LNN的数据存储层,管理节点信息、网络能力、设备状态等核心数据。

3.3.1 节点信息结构(NodeInfo)

文件: lnn_node_info.h

3.3.2 发现类型枚举
3.3.3 账本初始化

3.4 网络管理器(Net BusCenter)

文件路径: core/bus_center/lnn/net_buscenter/

核心职责: 管理和协调不同物理子网(Physical Subnet)的接入,提供统一的网络接口抽象层。

3.4.1 网络协议管理器

文件: lnn_network_manager.c

核心数据结构:

网络接口类型:

协议注册机制:

3.4.2 物理子网管理

文件: lnn_physical_subnet_manager.c

职责: 管理系统中的物理网络接口(Physical Network Interface),将不同类型的网络接口抽象为统一的管理结构。


3.5 通道枢纽(Lane Hub)

文件路径: core/bus_center/lnn/lane_hub/

核心职责: 通道(Lane)是DSoftBus中数据传输路径的抽象,Lane Hub负责通道的选择(Selection)、评分(Scoring)、分配(Assignment)和生命周期管理。

Lane Hub子模块结构:

3.5.1 通道类型定义
3.5.2 通道选择算法

文件: lnn_lane_select.c

选择流程:

链路评分接口:

3.5.3 心跳机制(Heartbeat)

文件: heartbeat/

心跳FSM状态:

心跳状态转换:

心跳事件处理:

心跳类型:

  • lnn_ble_heartbeat.c: BLE心跳 - 通过BLE广播/扫描传输心跳
  • lnn_ble_lpdevice.c: BLE低功耗设备 - 针对低功耗设备的特殊心跳策略

3.6 组网内发现封装(Disc Mgr)

文件路径: core/bus_center/lnn/disc_mgr/

职责: 这是LNN模块内部对CoAP发现的封装层,不是完整的Discovery模块。

发现实现类型:

注意: 完整的Discovery模块位于core/discovery/目录,包括BLE发现、CoAP发现、USB发现等多种发现策略。LNN的disc_mgr只是调用Discovery模块的封装。


3.7 决策中心(Decision Center)

文件路径: core/bus_center/lnn/decision_center/

职责: 基于网络状态和策略,做出网络优化决策,如通道切换、负载均衡等。


3.8 元节点管理(Meta Node)

文件路径: core/bus_center/lnn/meta_node/

元节点信息结构:

元节点特性:

  • 元节点是网络中具有特殊职责的节点
  • 支持元节点发现(Meta Discovery)
  • 元节点信息会记录在NodeInfo的metaInfo字段中

四、模块间协作关系

4.1 LNN在DSoftBus中的位置

4.2 LNN内部模块协作流程

五、核心设计模式总结

5.1 设计模式一览

设计模式应用场景示例
有限状态机(FSM)连接生命周期、心跳状态lnn_connection_fsm.c、lnn_heartbeat_fsm.c
工厂模式(Factory)网络接口创建NetifMgrFactory()
观察者模式(Observer)设备发现回调g_discoveryCallback.onDeviceFound
策略模式(Strategy)通道评分算法getLinkScore() 函数指针
中介者模式(Mediator)LNN作为协调中心Bus Center统一管理
发布-订阅模式服务发布/订阅LnnPublishService() / LnnStartDiscDevice()

5.2 消息类型枚举

六、总结

6.1 LNN模块核心定位

维度描述
定位DSoftBus的协调编排层(Orchestration Layer)
不直接做设备发现、物理连接建立、数据传输
核心做网络拓扑管理、节点状态维护、通道选择分配
对上接收Transmission模块的通道请求
对下调用Discovery发现设备、调用Connection建立连接、调用Authentication完成认证

6.2 核心子系统职责

子系统核心职责关键设计
Net Builder网络构建、连接FSM4状态FSM(Auth→Online→Clean→Leaving)
Net Ledger节点信息存储Local Ledger + Distributed Ledger
Net BusCenter网络协议调度Protocol Manager + Physical Subnet Manager
Lane Hub通道选择分配多策略评分算法 + 心跳FSM

6.3 与其他模块的关系

LNN是整个DSoftBus系统的"大脑",负责协调各模块工作、维护网络拓扑、选择最优传输路径,确保分布式设备能够高效、可靠地通信。

原文作者:六bring个六;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-02-05

  • 博文量
    18
  • 访问量
    638