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/v1alpha1kind: Componentmetadata:  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),备注来意,邀请进群