iceoryx源码阅读(一)——全局概览
0 导引
本系列文章对iceoryx源码进行解读,索引如下:
-
iceoryx源码阅读(六)——共享内存创建
-
iceoryx源码阅读(七)——服务发现机制
-
iceoryx源码阅读(九)——等待与通知机制
1 什么是iceoryx
iceoryx是一种基于共享内存实现的进程间通信组件,实现零拷贝传输。
2 源码结构
iceoryx源码包括若干工程,整理如下表所示:
下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):
3 iceoryx应用程序结构
下图是来自iceoryx Github README中的图片,很好地展示了iceoryx应用程序结构:
iceoryx应用程序有三类进程,分别为Publisher、Subscriber和Roudi,如下图(极度简化且直觉):
其中,Publisher和Subscriber分别是发布者进程和订阅者进程,其职责是明确的,即发送和接收消息。Roudi是一个中心化的管理员进程,职责包括:
-
进程管理,ProcessManager。
-
共享内存创建、回收及管理结构的初始化,MemoryManager。
-
服务发现,Service Discovery,即建立Publisher和Subscriber关联。
需要指出的是,共享内存中除了存放传输的消息,还需要存放共享内存管理相关的对象,这些对象也是多进程共享,具体有哪些对象将在后续逐步展开。
4 优势
性能是基于共享内存通信的最大优势,下图来自iceoryx的github页面:
可以看到,由于零拷贝,所以通信耗时几乎和负载长度无关。接下来的系列文章,我们将分析iceoryx如何实现基于共享内存的零拷贝通信。