柚子快报激活码778899分享:分布式应用运行时Dapr

http://www.51969.com/

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/)

柚子快报激活码778899分享:分布式应用运行时Dapr

http://www.51969.com/

查看原文