目录
Dapr 学习笔记 2 - Code Map
2021-03-06
在进一步理解 Dapr,我们先来大概看一下它的 code base,梳理一下它的代码地图,从而对它的结构有个 high-level 的理解。
目录结构
Dapr 的代码包含了几个主要的顶层目录:
cmd
: 包含了几个主要的可执行程序。dapr
: 包含了 dapr 使用到的 protobuf 的定义。这些 protobuf 主要是用于 RPC 使用的数据结构定义。pkg
: 包含了 dapr 的核心代码。
cmd - 可执行程序
Dapr 包含了若干个可执行程序,它们的代码在 cmd
这个路径下。其中最重要的就是下面 daprd
。它就是 dapr 提供的运行时环境,也就是实际的 sidecar。
除此之外,还有以下几个不是特别核心的:
placement
:用于在“放置”actor
,比如在适合的 pod 上运行 actor。injector
和operator
:这是 dapr 在 K8s 环境中部署是使用的。sentry
:TLS 的 CA。dapr 的 sidecar 之间的 TLS 通讯会使用到它。
daprd v.s. dapr
在看 dapr 文档的时候,相信大家也都使用了 dapr
这个命令行工具。要注意它和 daprd
是有区别的,并且它的代码在单独的 repo 中。daprd
是实际的运行时环境。而 dapr
类似一个 devops 工具。在我们执行 dapr run ...
的时候,它会同时执行 daprd
和我们指定的应用程序。
pkg - 核心代码
这个目录包含了 dapr 的核心代码。其中 runtime 是核心中的核心。其他目录则包含了 dapr 的各个组件的代码。
总结
Dapr 的代码结构还是比较清晰的。之后我会从 runtime 开始,研究一下 dapr 大概的实现原理。