当前位置:网站首页>Dapr 源码解析 | 项目总览

Dapr 源码解析 | 项目总览

2022-06-09 15:41:00 风神修罗使

本文源码选用 dapr 1.4.3 https://github.com/zcong1993/dapr-1/tree/learn-1.4.3

Concepts

在这里插入图片描述
总体来看, dapr 可以分为这么几个概念:

Building blocks 构建块

dapr 向用户提供的 HTTP/gRPC API, 由一个或多个 component 组成.

例如: Secrets 模块对用户提供获取 secrets 的 API.

# 获取单个 secret
GET http://localhost:<daprPort>/v1.0/secrets/<secret-store-name>/<name>
# 批量获取
GET http://localhost:<daprPort>/v1.0/secrets/<secret-store-name>/bulk

Components 模块

dapr 抽象出来的用于构建块和应用的通用化模块.

例如: Secret Stores 组件对外提供 secret 读取服务.

type SecretStore interface {
    
  // Init authenticates with the actual secret store and performs other init operation
  Init(metadata Metadata) error
  // GetSecret retrieves a secret using a key and returns a map of decrypted string/string values
  GetSecret(req GetSecretRequest) (GetSecretResponse, error)
  // BulkGetSecrets retrieves all secrets in the store and returns a map of decrypted string/string values
  BulkGetSecret(req BulkGetSecretRequest) (BulkGetSecretResponse, error)
}

支持 Kubernetes, Hashicorp Vault, Azure KeyVault 等多种 provider.

Configuration

组织 dapr 运行需要的各种配置, 主要分为: 全局配置, 模块配置和运行时配置.

Observability 可观测性

dapr 可观测性模块, 对外提供 logging, metrics, tracing 等指标.

Security

dapr 安全相关, 例如: 服务间 mTLS 加密.

Services

dapr 项目对外提供的 cli app. 从项目入口 cmd 文件夹也可以看出:

cmd
├── daprd // 核心 runtime, 后续源码阅读重点
├── injector // k8s dapr sidecar 注入器
├── operator // k8s operator
├── placement // actor 相关
└── sentry // mTLS  相关

运行环境

dapr 支持两种运行方式, 分别是: 独立运行k8s 运行.

Self-hosted

此种模式下, daprd 会作为一个 sidecar 进程运行在你的每个 app 旁边, 你的 app 可以通过 HTTP/gRPC 与它交互. 配置文件会存储在本地. 运行时配置需要使用 flag 传递.
在这里插入图片描述

Kubernetes

在 k8s 中, daprd 会做为一个 sidecar 容器运行在你的 app pod 中, 并且这一切都是 dapr-sidecar-injectordapr-operator 帮你自动完成的. 配置文件也是使用 k8s crd 的形式管理, 运行配置可以通过 k8s annonation 来配置.
在这里插入图片描述

原网站

版权声明
本文为[风神修罗使]所创,转载请带上原文链接,感谢
https://blog.csdn.net/wulex/article/details/124990536