关于c#:手把手教你学Dapr-2-必须知道的概念

5次阅读

共计 2951 个字符,预计需要花费 8 分钟才能阅读完成。

Sidecar 边车

Dapr API 提供 Http 和 gRPC 两种通信形式。

运行形式则能够是容器也能够是过程(Windows 开发举荐应用 Self Hosted,后续会解释)。

这样的益处是与运行环境无关,且独立运行不须要利用蕴含 Dapr 运行时的代码。只须要通过 SDK 集成即可,这使得 Dapr 与利用的逻辑拆散。

Building blocks 构建块

官网解释:可通过规范 HTTP 或 gRPC api 拜访的模块化最佳实际

艰深一点来说,就是 API

目前反对的构建块如下,但 1.5 很快会出一个新的 Configuration API(从这个新的 API 又印证了构建块的实质),由阿里 - 敖小剑牵头整顿的

Github Issue: https://github.com/dapr/dapr/…

这个提案很长,很波折。认真看会发现中外开发大环境下的一些思维碰撞。微软绝对激进,阿里绝对激进但也更求实。最终长达几个月的强烈探讨下定版。

期间自己也有幸与 阿里 - 敖小剑 阿里 - 典礼(Layotto 的研发同学,Layotto 兼容 Dapr 协定,是蚂蚁在做)开过语音会议一起聊过对于 Configuration API 的一些设计问题。

  • 服务调用
  • 状态治理
  • 公布订阅
  • 绑定
  • Actor(这个不倡议翻译回中文)
  • 可观测性
  • 平安

Components 组件

官网解释:被用于构建块和应用程序的模块化性能

Dapr 应用模块化设计,将性能作为组件来提供。每个组件都有接口定义。所有组件都是可插拔的,因而您能够将组件换为另一个具备雷同接口的组件。

联合构建块来看,组件有接口定义。而构建块则通过接口将组件的性能串联起来

基于对 Dapr 设计的了解,咱们的 MASA Framework 也定义出了 BuildingBlocks 和 Contrib,与 dapr 会有些许不同

起因如下:

  1. 由 BuildingBlocks 定义规范、串业务流程
  2. 让 Contrib 变成咱们的最佳实际,并容许开发从新定义 BuildingBlocks 的具体实现,在保障性能残缺的前提下提供更合乎业务场景的性能又有参考代码
  3. 聚焦外围代码稳定性,提供单元测试覆盖率保障,共享公众智慧

组件与构建块并不是一一对应的,组件能够被不同的构建块复用,比方 Actor 构建块内的状态治理也是用的状态存储组件

  • 状态存储
  • 服务发现
  • 中间件
  • 公布订阅代理
  • 绑定
  • 密钥存储

Configuration 配置

官网解释:变更 Dapr Sidecar 或全局 Dapr 零碎服务的行为

配置定义和部署模式为 YAML 文件

在官网文档的 Component sepcs 能够看到每个组件提供了多少种实现,每个实现个性反对状况

除此之外不同组件的配置文件格式也是包罗万象

官网文档对于组件配置的解说十分具体,这里举个例子,Redis 状态治理的配置文件格式

你须要变更的局部曾经用 <> 和 # 做了标记

参考自:https://docs.dapr.io/referenc…

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: <HOST>
  - name: redisPassword
    value: <PASSWORD>
  - name: enableTLS
    value: <bool> # Optional. Allowed: true, false.
  - name: failover
    value: <bool> # Optional. Allowed: true, false.
  - name: sentinelMasterName
    value: <string> # Optional
  - name: maxRetries
    value: # Optional
  - name: maxRetryBackoff
    value: # Optional
  - name: ttlInSeconds
    value: <int> # Optional

Observability 可观测性

官网解释:通过跟踪、指标、日志和健康状况监督利用

在构建应用程序时,理解零碎如何运行是运维的一个重要局部——这包含有能力观测应用程序的外部调用,评估其性能并在产生问题时立刻意识到问题

这对任何零碎都是一种挑战,而对于由多个微服务组成的分布式系统来说更是如此

分布式跟踪

配置发送跟踪数据,轻松集成多个监控后端

OpenTelemetry collector

配置 OpenTelemetry 收集器,应用反对 OpenTelemetry 的监控后端

Dapr Sidecar 和零碎服务的可观测性

配置收集 Dapr Sidecar 和相干服务的指标和日志

Security 安全性

Dapr 用于加密传输中数据的平安机制之一是 互相认证(mutual authentication)TLS 或简写为 mTLS

  • 双向身份验证
  • 通过加密通道通信

Sidecar 与利用通信

Dapr Sidecar 通过 localhost 与利用通信,并提供 Token API 级别身份验证

Sidecar 之间的通信

Dapr 默认开启 mTLS(能够手动敞开,有肯定的性能损耗,大多数状况下能够忽略不计)。Dapr 利用 Sentry 的零碎服务充当证书颁发机构,包含证书轮换。

证书默认有效期为 24 小时,时钟偏差为 15 分钟。

Self Hosted mTLS

K8s mTLS

Sidecar 与零碎服务之间的通信

Dapr Sidecar 和 Dapr 零碎服务之间是强制性 mTLS 的,包含 Sentry(证书颁发机构)、Placement(Actor 安置服务)和 K8s Operator

K8s 中零碎服务的 mTLS

  • Dapr Sidecar 与 Dapr 零碎服务(Actor Placement, Sidecar Injector, Sentry, Operator)之间是通过 mTLS
  • Kubelet 与 Dapr Sidecar 之间也是通过 mTLS
  • Dapr Sidecar 或者 Dapr 零碎服务与 Components 之间也是通过 mTLS
  • Dapr Sidecar 与利用之间不是

其实 Dapr 在平安方面做的工作很多,这里就不持续一一列举了

咱们正在口头,新的框架、新的生态

咱们的指标是 自在的 易用的 可塑性强的 功能丰富的 强壮的

所以咱们借鉴 Building blocks 的设计理念,正在做一个新的框架MASA Framework,它有哪些特点呢?

  • 原生反对 Dapr,且容许将 Dapr 替换成传统通信形式
  • 架构不限,单体利用、SOA、微服务都反对
  • 反对.Net 原生框架,升高学习累赘,除特定畛域必须引入的概念,保持不造新轮子
  • 丰盛的生态反对,除了框架以外还有组件库、权限核心、配置核心、故障排查核心、报警核心等一系列产品
  • 外围代码库的单元测试覆盖率 90%+
  • 开源、收费、社区驱动
  • 还有什么?咱们在等你,一起来探讨

通过几个月的生产我的项目实际,已实现 POC,目前正在把之前的积攒重构到新的开源我的项目中

目前源码已开始同步到 Github(文档站点在布局中,会缓缓欠缺起来):

MASA.BuildingBlocks

MASA.Contrib

MASA.Utils

MASA.EShop

BlazorComponent

MASA.Blazor

QQ 群:7424099

微信群:加技术经营微信(MasaStackTechOps),备注来意,邀请进群

正文完
 0