Skip to content

iceoryx2 分层架构

核心思想 iceoryx2 采用分层架构,实现关注点分离模块化设计。各层基于下层提供的组件构建,职责明确。

layered architecture of iceoryx2

主要层次(从高层到低层)

  1. 用户 API 层 (iceoryx2)

    • 功能: 提供应用程序与 iceoryx2 系统交互的接口。
    • 描述: 这层是面向应用开发者的主要接口,封装了系统核心功能。
  2. 概念抽象层 (iceoryx2-cal)

    • 功能: 实现共享内存通信的领域特定功能和组件。
    • 描述: 每个概念提供多个实现,可以组合配置以形成完整的 iceoryx2 部署方案。该层是架构中连接高层应用与底层技术的核心。
  3. 构建块层 (iceoryx2-bb)

    • 功能: 提供独立于 iceoryx2 和共享内存通信领域的、可复用且优化的组件。
    • 描述: 处理通用计算逻辑和数据管理模式的组件,相当于为 iceoryx2 定制的“标准库”,且符合认证要求。
  4. 平台抽象层 (iceoryx2-pal)

    • 功能: 抽象 iceoryx2 运行所需的核心平台功能。
    • 当前实现: 支持 POSIX 风格,适配所有支持的平台。
    • 扩展性: 可通过为目标平台实现对应抽象接口,来添加新平台支持。

附加信息

  • 设计优势: 分层的架构便于理解、扩展和维护。
  • 参考资源:

通信模型

pub/sub

publish-subscribe messaging pattern

核心概念

  • 模式定义:一种单向、多生产者、多消费者的通信模型。
  • 核心优势:将生产者(发布者)与消费者(订阅者)解耦。
  • 运行特点
    • 参与者拥有独立生命周期,可完全独立运行。
    • 发布者发送消息时无需知晓接收者。
    • 订阅者声明对特定服务的负载感兴趣,系统会自动将其与匹配的发布者连接。

适用场景与局限

  • 擅长领域:向多个参与者传递大型负载。其零拷贝特性使得无论负载大小,都能实现基本恒定的延迟。
  • 不适用场景
    • 需要向参与者无限期保留数据(如 blackboard 模式)。
    • 需要进行双向通信(如请求-响应模式)。

实现机制(基于共享内存)

publish-subscribe messaging protocol

该模式通过共享内存中的数据结构实现,主要涉及:

  1. 负载段
    • 共享内存中的一个区域,用于在参与者之间传递负载数据。
    • 发布者拥有一个负载段,用于与订阅者共享数据样本。
    • 负载段中内存的组织方式取决于 iceoryx2 部署中使用的分配器
    • 这种灵活性允许不同的部署(例如,桌面应用程序与安全关键型应用程序)根据其使用场景采用不同的合适策略。
  2. 偏移通道
    • 一个用于传递负载段内负载偏移量的通道。
    • 每个发布者-订阅者对都拥有自己独立的偏移通道。

event

event messaging pattern event messaging pattern

req-rsp

request-response messaging pattern request-response messaging protocol

blackboard

blackboard messaging pattern

blackboard messaging pattern

基于 VitePress 构建