分布式应用运行时Dapr

分布式应用运行时Dapr

Dapr为微软开源的一个用于构建分布式应用的框架,Dapr为分布式应用运行时(Distributed Application Runtime)的英文单词缩写;Dapr提供了分布式应用所依赖的执行环境,分布式运行时包括了:服务通讯、数据持久化、资源绑定、pub-sub、Actors、密钥等,通过使用Dapr可以使用任何语言轻松构建与平台无关的微服务应用;

Dapr通过HTTP/gRPC API与语言无关的暴露了分布式的应用调用,官方提供了主流语言Go、Java、Python、.Net等的SDK使得开发者可以方便Dapr的使用;
  Dapr使用了sidecar模式公开其Api,应用程序无需包含任何的Dapr运行时代码,使得应用逻辑与Dapr运行时分离;

核心结构

Dapr核心包括三部分:API、Building Blocks、Components

Building Blocks(构建块)
目前Dapr中提供了与分布式应用开发息息相关的下列7种构建块:
  service-to-service invocation 服务间调用
  State management 状态管理
  Publish and subscribe 发布订阅
  Resource bindings 资源绑定
  Actors Actors实现
  Observability 可观测性
  Secrets 密钥

Components(组件)
  Dapr使用模块化设计将功能作为组件提供,定义组件接口,所有组件都可插拔;构建块也可使用任何组件组合;
  Dapr也提供了多种组件:状态组件、服务发现组件、中间件组件、Pub/Sub代理组件、绑定组件、密钥存储组件;

Dapr API

Dapr使用API暴露了分布式能力,将分布式原语映射到API上使之应用可以轻松的的使用成为分布式能力,开发者无需在去引用各种组件;Dapr提供了HTTP1.1/REST 和 HTTP2/gRPC两种API;
  应用只需发起API调用,无论是服务调用、数据存储或是消息发布,存储后端是redis还是Mysql应用完全不用关心,都是相同的API;

三者的关系:

API:统一标准暴露组件块
Building Blocks(组件块):分布式能力的抽象
Components(组件):分布式能力的具体实现

Dapr部署模式

Dapr支持两种部署模式:宿主机模式、Kubernetes容器化部署模式;
  Dapr使用sidecar模式提供Building blocks的能力,当部署模式为宿主机模式时每个应用服务都有一个Dapr运行时进程(sidecar进程)为一个独立的进程,模式为容器化模式时sidecar container将被注入到业务Pod中;

宿主机模式

部署默认情况下,也需要使用Docker。
将在Docker中启动三个容器:placement、zipkin、redis容器;
  Placement容器:用于actor 分布方案和关键范围设置。
  Redis容器:配置为作为状态管理和发布/订阅的默认组件。
  Zipkin容器:用于诊断和跟踪的Zipkin容器。
使用Dapr slim模式将不依赖于Docker,将启动两个独立进程:Daprd、Placement;

Dapr安装

1、下载Dapr cli
https://github.com/dapr/cli/releases
2、初始化Dapr
dapr init

3、验证Dapr


Dapr Hello World

启动 Dapr sidecar,它将在端口 3500 上监听名为 myapp 的空白应用程序:

dapr run --app-id myapp --dapr-http-port 3500

提交状态数据:

 curl -X POST -H "Content-Type: application/json" -d "[{ "key": "dapr", "value": "Hello World"}]" 
 http://localhost:3500/v1.0/state/statestore

获取状态:

 curl http://localhost:3500/v1.0/state/statestore/dapr  
 Hello World  

查看redis中所存储的数据:

docker exec -it dapr_redis redis-cli
hgetall "myapp||dapr"

参考资料
Dapr | 云原生的抽象与实现(https://mp.weixin.qq.com/s/4HHMVxa3l_gCsltoX4euyg)
dapr docs(https://docs.dapr.io/)

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 分布式应用运行时Dapr