iceoryx源码阅读(一)——全局概览

0 导引

本系列文章对iceoryx源码进行解读,索引如下:

1 什么是iceoryx

iceoryx是一种基于共享内存实现的进程间通信组件,实现零拷贝传输。

图片名称

2 源码结构

iceoryx源码包括若干工程,整理如下表所示:

image

下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):

image

3 iceoryx应用程序结构

下图是来自iceoryx Github README中的图片,很好地展示了iceoryx应用程序结构:

image

iceoryx应用程序有三类进程,分别为Publisher、Subscriber和Roudi,如下图(极度简化且直觉):

image

其中,Publisher和Subscriber分别是发布者进程和订阅者进程,其职责是明确的,即发送和接收消息。Roudi是一个中心化的管理员进程,职责包括:

  • 进程管理,ProcessManager。

  • 共享内存创建、回收及管理结构的初始化,MemoryManager。

  • 服务发现,Service Discovery,即建立Publisher和Subscriber关联。

需要指出的是,共享内存中除了存放传输的消息,还需要存放共享内存管理相关的对象,这些对象也是多进程共享,具体有哪些对象将在后续逐步展开。

4 优势

性能是基于共享内存通信的最大优势,下图来自iceoryx的github页面:

image

可以看到,由于零拷贝,所以通信耗时几乎和负载长度无关。接下来的系列文章,我们将分析iceoryx如何实现基于共享内存的零拷贝通信。

posted @ 2024-05-10 00:49  爱新觉罗·L  阅读(1148)  评论(0编辑  收藏  举报