1.3 核心概念图解
这一节我们认识"黑板教室"里的几位主角。别担心,每个概念都对应一个你熟悉的画面。
节点(Node)
节点(Node) 就是教室里的一名同学,负责一件独立的事:有的读数据、有的算数据、有的写结果。
在小莫身上,"摄像头"是一个节点、"物体检测"是一个节点、"显示画面"又是一个节点。每个节点各管一摊,互不打扰。
数据流(Dataflow)
数据流(Dataflow) 描述的是:哪些节点、它们之间的数据怎么流动——相当于一张"谁写黑板、谁看黑板"的值日表。
比如小莫"看东西"这件事,就是这样一条数据流:
摄像头把图像写上黑板,检测节点看到图像、算出"这是什么",再把结果写上黑板,显示节点拿去展示。
输入与输出(Input / Output)
- 输出(Output):一个节点把结果写到黑板上。
- 输入(Input):一个节点从黑板上读取它需要的东西。
上面的箭头,就是"谁的输出 → 接到谁的输入"。
共享内存与零拷贝
这是 DORA 最关键的两个词,但用黑板一讲就通:
- 共享内存(Shared Memory) = 那块大家都看得见的黑板本身。数据放在这块公共区域,节点们直接看,不用互相"递纸条"。
- 零拷贝(Zero-copy) = 没人会把黑板上的内容先抄到自己本子上再用,而是直接对着黑板处理。省掉了抄写,所以极快。
就是因为有这块"黑板",我的眼睛把一大张图片放上去,大脑能马上看到,中间不用打包、不用誊抄——又快又省力!
Arrow:黑板的统一书写规范
如果每个同学用自己的火星文写黑板,别人还得先翻译,就慢了。所以 DORA 规定大家都用一套统一的书写规范——这就是 Apache Arrow(一种标准的数据格式)。
有了它,无论是 Python 同学还是 Rust 同学写的数据,别人都能直接读懂,不用翻译。
算子(Operator)
算子(Operator) 你可以理解为一种更轻量的节点——住在同一个"运行时"里的小处理单元。入门阶段先知道有这么个词即可,后面用到再细说。
把它们串起来
回到那张"看东西"的数据流,用刚学的词复述一遍:
三个节点(摄像头/检测/显示)按一张数据流值日表协作;数据用 Arrow 格式写在共享内存(黑板)上,节点们零拷贝地直接读用。
是不是清晰多了?
动手练习(思考题)
小莫"听人说话并回答"也可以画成一条数据流。请你试着写出它的节点顺序(用箭头连起来)。
参考答案
一种画法:
每个节点只做一件事,数据一路"写黑板、看黑板"地往下流。
小结
- 节点=干活的同学;数据流=谁写谁看的值日表。
- 共享内存=公共黑板;零拷贝=不抄写、直接用。
- Arrow=统一书写规范,多语言零翻译。
- 记住那条
摄像头 → 检测 → 显示的小数据流,后面会反复见到它。
下一节,我们快速认个脸:DORA 的四种通信方式。