Dapr-简介及环境搭建
一、Dapr是什么?
Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。
在上图的第一行中,Dapr 为常见开发平台提供特定于语言的 Sdk。 Dapr 1.0 版包含对go、Node.js、Python、.NET、Java 等的支持。
尽管语言特定的 Sdk 增强了开发人员体验,但 Dapr 不限平台。 在后台,Dapr 的编程模型通过标准 HTTP/gRPC 通信协议公开功能。 任何编程平台都可以通过其本机 HTTP 和 gRPC Api 调用 Dapr。
图中心的蓝色框表示 Dapr 构建基块。 每个都公开您的应用程序可以使用的分布式应用程序功能。每个构建块都是独立的,这意味着您可以采用其中一个、多个或全部来构建应用
Dapr体系结构:
构建基块:可通过标准 HTTP 或 gRPC API 访问的模块化最佳实践
构建块解决了构建弹性微服务应用程序中的常见挑战,并编纂了最佳实践和模式。 Dapr由一组构建块组成,并且具有可扩展性以添加新的构建块。
构建基块从服务中抽象出分布式应用程序功能的实现:
以下是 Dapr 提供的构建块类型:
构建块 | 终结点 | 说明 |
---|---|---|
服务调用 | /v1.0/invoke |
服务调用使应用程序能够通过 Http 或 gRPC 消息形式相互通信。 Dapr 提供了一个终结点,它充当反向代理与内置服务发现的组合,同时内置分布式跟踪和错误处理。 |
状态管理 | /v1.0/state |
应用程序状态是应用程序想要保留在单个会话之外的任何内容。 Dapr 提供基于键 / 值的状态 API ,使用可插拔的状态存储进行持久化。 |
发布订阅 | /v1.0/publish /v1.0/subscribe |
发布/预订是松散耦合的消息传递模式,发送方 (或发布者) 将消息推送到订阅者预订的主题。 Dapr 支持应用程序之间的发布/订阅模式。 |
资源绑定 | /v1.0/bindings |
绑定提供一个外部云与本地服务或系统的双向连接。 Dapr 允许您通过 Dapr 绑定 API 调用外部服务,也可以通过已连接的服务发送的事件来触发应用程序。 |
Actors | /v1.0/actors |
参与者是孤立的独立计算单元,具有单线程执行。 Dapr提供了基于Virtual Actor模式的actor实现,该模式提供了单线程编程模型,并且在不使用actor时会对其进行垃圾回收。 |
可观测性 | 无 |
Dapr 系统组件和运行时记录 metrics,log 和 trace 以调试,操作和监视 Dapr 系统服务,组件和用户应用程序。 |
秘密 | /v1.0/secrets |
Dapr 提供一个机密构建块 API ,并与 Azure Key Vault 和 Kubernetes 等机密商店集成,以存储机密。 服务代码可以调用密钥 API 从 Dapr 支持的密钥存储中检索密钥。 |
组件:被用于构建块和应用程序的模块化功能
Dapr 使用模块化设计,将功能作为组件来提供。 每个组件都有接口定义。 所有组件都是可插拔的,因此您可以将组件换为另一个具有相同接口的组件。
Dapr 提供了以下组件类型:
组件 | 说明 |
---|---|
服务发现 | 由服务调用构建基块用来与宿主环境集成以提供服务到服务发现。 |
State | 提供一个统一接口,用于与各种状态存储实现进行交互。 |
Pub/sub | 提供一个统一接口,用于与各种消息总线实现进行交互。 |
绑定 | 提供一个统一接口,用于从外部系统触发应用程序事件,并调用具有可选数据有效负载的外部系统。 |
中间件 | 允许自定义中间件插入请求处理管道,并针对请求或响应调用其他操作。 |
机密存储 | 提供用于与外部机密存储(包括云、边缘、商业、开源服务)交互的统一接口。 |
Sidecar 体系结构
Dapr 通过 sidecar 体系结构 公开其 构建基块和组件。 Sidecar 使 Dapr 能够与服务一起在单独的内存进程或单独容器中运行。 Sidecar 提供隔离和封装,因为它们不是服务的一部分,但已连接到该服务。 这种分离使每个 都拥有自己的运行时环境,并基于不同的编程平台进行构建
托管环境
Dapr可以托管在多个环境中,包括在Windows/Linux/macOS机器上自托管和Kubernetes
- 自托管
Dapr 运行一个单独的 sidecar 程序,在您的服务代码中可以通过 HTTP 或 gRPC 调用它。 每个运行的服务都有一个 Dapr 运行时进程 (或 sidecar) ,配置为使用状态存储, pub/sub,绑定组件和其他构建块。
- 容器环境托管
在托管在容器环境中(如 Kubernetes),Dapr 作为 sidecar 容器运行,和应用程序容器在同一个 pod 中。
二、Dapr能干什么?
开发人员习惯于 Web + 数据库应用架构(例如经典 3 层设计),但对天然支持分布式的微服务应用架构却感觉陌生。 成为分布式系统专家很难,并且你也不需要这么做。 开发人员希望专注于业务逻辑,同时希望平台为其提供可伸缩的、弹性的、可维护的和云原生架构的其他功能。
这就是Dapr所要解决的。 Dapr 将构建微服务应用的 最佳实践 设计成开放、独立和模块化的方式,让你能够使用任意的开发语言和框架构建可移植的应用程序。 每个构建块都是完全独立的,您可以采用其中一个、多个或全部来构建你的应用。
此外,Dapr 是和平台无关的,这意味着您可以在本地、Kubernetes 集群或者其它集成 Dapr 的托管环境中运行应用程序。 这使得您能够在云平台和边缘计算中运行微服务应用。
使用 Dapr,您可以使用任何语言、框架轻松构建微服务应用,运行在任何地方。
Dapr 的核心是帮助降低分布式微服务应用程序固有的复杂性。 它基于构建基块 API 的概念而构建。 Dapr 构建基块公开常见的分布式应用程序功能,例如状态管理、服务到服务调用和发布/子消息传送。 Dapr 组件位于构建基块下面,并为每项功能提供具体实现。 应用程序通过配置文件绑定到各种组件
三、Dapr环境安装?
- 安装Dapr CLI脚手架工具
Dapr CLI 是您用于各种 Dapr 相关任务的主要工具。 您可以使用它来运行一个带有Dapr sidecar的应用程序, 以及查看sidecar日志、列出运行中的服务、运行 Dapr 仪表板。
后续案例将使用windows 下的自托管模式进行验证。
1.下载最新dapr包:发布包 ;下载后解压到指定目录;并添加到环境变量中。
2. 检查dapr是否安装成功,在命令行中输入:
dapr
返回结果为以下结果则安装成功:
- 初始化Dapr运行环境
Dapr 与您的应用程序一起作为sidecar运行,在自托管模式下,这意味着它是您本地机器上的一个进程。 因此,初始化 Dapr 包括获取 Dapr sidecar 二进制文件并将其安装到本地.
此外,默认初始化过程还创建了一个开发环境,帮助简化 Dapr 的应用开发。 这包括下列步骤:
- 运行一个用于状态存储和消息代理的Redis容器实例
- 运行一个用于提供可观察性的Zipkin容器实例
- 创建具有上述组件定义的 默认组件文件夹
- 运行用于本地演员支持的Dapr placement服务容器实例
初始化
dapr init --输出
Making the jump to hyperspace...
Installing runtime version 1.4.3
Downloading binaries and setting up components...
Downloaded binaries and completed components set up.
daprd binary has been installed to C:\Users\cwsheng\.dapr\bin.
dapr_placement container is running.
dapr_redis container is running.
dapr_zipkin container is running.
Use `docker ps` to check running containers.
Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
检查版本:
dapr -v
--输出
CLI version: 1.4.0
Runtime version: 1.4.3
查看容器运行:
//命令
docker ps //输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11590b26a82d daprio/dapr:1.4.3 "./placement" 3 minutes ago Up 3 minutes 0.0.0.0:6050->50005/tcp, :::6050->50005/tcp dapr_placement
69127c7c31bc redis "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp dapr_redis
2a6305446b0e openzipkin/zipkin "start-zipkin" 8 minutes ago Up 8 minutes (healthy) 9410/tcp, 0.0.0.0:9411->9411/tcp, :::9411->9411/tcp dapr_zipki
验证组件目录已初始化:
explorer "%USERPROFILE%\.dapr\"
会看到以下目录:
到此,dapr 环境已安装完成。
总结:
Dapr,就是一种分布式应用程序运行时。
Dapr-简介及环境搭建的更多相关文章
- 简介及环境搭建跑通Hello
简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...
- Redis入门很简单之一【简介与环境搭建】
Redis入门很简单之一[简介与环境搭建] 博客分类: NoSQL/Redis/MongoDB redisnosqlmemcached缓存中间件 [Redis简介] <一>. NoSQL ...
- 1.SpringMVC的简介和环境搭建
SpringMVC的简介: SpringMVC 和 Struts一样是一个MVC框架,和Spring无缝连接,和struts2类似, Spring MVC属于SpringFrameWork的后续产品, ...
- 一、springBoot简介与环境搭建
前言:学习计划 1.springBoot环境搭建 2.springBoot入门 3.srpingBoot整合Mybatis 4.springBoot整合Redis,Redis集群 5.springBo ...
- Monkey简介及环境搭建(1)
简介:Monkey是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用 ...
- PyQT5速成教程-1 简介与环境搭建
本文由 沈庆阳 所有,转载请与作者取得联系! PyQt简介 一个良好的界面是人机交互中十分重要的一环. Python作为脚本语言,起初并未拥有GUI开发的部分.但随着其开放的扩展性,使得Python不 ...
- Mybatis简介、环境搭建和详解
简介: 1.Mybatis 开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github 2.作用: 数据访问层框架 2.1 底层是对JDBC的封装 3.myb ...
- go语言之行--简介与环境搭建
一.Go简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后 ...
- 01 Python简介、环境搭建及包管理(一)
一.Python简介 1. Python的特点: 是一门动态.解释型.强类型语言 动态:在运行期间才做数据检查(不用提前声明变量)- 静态语音(C/Java):编译时检查数据类型(编码时需要声明变量类 ...
- ①spring简介以及环境搭建(一)
注*(IOC:控制反转.AOP:面向切面编程) spring官网:http://spring.io/ spring简介: spring是一个开源框架 spring为简化企业级应用开发而生,使用Spri ...
随机推荐
- python 实用技巧:几十行代码将照片转换成素描图、随后打包成可执行文件(源码分享)
效果展示 原始效果图 素描效果图 相关依赖包 # 超美观的打印库 from pprint import pprint # 图像处理库 from PIL import Image # 科学计算库 imp ...
- Kickstart部署之HTTP架构
原文转自:https://www.cnblogs.com/itzgr/p/10029527.html作者:木二 目录 一 准备 1.1 完整架构:Kickstart+DHCP+HTTP+TFTP+PX ...
- 快速排序(C++)
快速排序 快速排序是面试中经常问到的排序算法 基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分记录继续进行排序,以达到整个序 ...
- noip模拟37
\(\color{white}{\mathbb{燕子来时青尚在,木荫遥看杏花菲,名之以:杏红}}\) 考场发现 \(t2\) 基本上是原题,\(t3\) 的套路见过,\(t4\) 像是并查集之类的算法 ...
- 第08课:GDB 实用调试技巧( 上)
本节课的核心内容: 将 print 打印结果显示完整 让被 GDB 调试的程序接收信号 函数明明存在,添加断点时却无效 将 print 打印结果显示完整 当使用 print 命令打印一个字符串或者字符 ...
- 自定义-starter
目录 说明 编写启动器 新建项目测试我们自己写的启动器 分析完毕了源码以及自动装配的过程,可以尝试自定义一个启动器来玩玩! 自动装配的过程 SpringBoot-静态资源加载-源码 SpringBoo ...
- 自定义组件 v-model 的使用
关于自定义组件如何使用 v-model,本章直讲如何使用: 一. $emit('input', params) // 父组件中 <template> <article> {{f ...
- Java 语法学习2
Java基础语法二 类型转换 public class demo03 { public static void main(String[] args) { int i=128; byte a=(byt ...
- HiveServer2的负载均衡高可用与ActicePassive高可用浅析
负载均衡的高可用 最近在工作中遇到了hiveserver2需要部署高可用的场景,去网上搜索了解过后,用了绝大多数人推荐的共同方法: Property_name Property_value Descr ...
- VMware ESXi 7.0 U2 SLIC 2.6 & Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动
ESXi 7 U2 标准版镜像集成 NUC 网卡.USB 网卡 和 NVMe 驱动. 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u2-nuc-usb-n ...