1、简介
简单介绍一下Dapr的优势,摘自官方文档:
- Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。
- Any languae, Any framework, Anywhere:Dapr 是和平台无关的,这意味着您可以在本地、Kubernetes 集群或者其它集成 Dapr 的托管环境中运行应用程序。 这使得您能够在云平台和边缘计算中运行微服务应用。使用 Dapr,您可以使用任何语言、框架轻松构建微服务应用,运行在任何地方。
- Sidecar架构:Dapr以 sidecar 架构的方式公开其API,可以是容器,也可以是进程,不需要应用代码包含任何 Dapr 运行时代码。 这使得 Dapr 与其他运行时的集成变得容易,在应用逻辑层面做了隔离处理,提高了可扩展性。
- Dapr可以托管在多个环境中,包括在Windows/Linux/macOS机器上自托管和Kubernetes。
详情参考官方文档:Dapr Document Library - Overview
2、自托管模式
Dapr 可以配置为在本地开发者机器或生产VM上以自托管模式运行。 每个运行的服务都有一个 Dapr 运行时进程 (或 sidecar) ,配置为使用状态存储, pub/sub,绑定组件和其他构建块。自托管是一个All in one 模式,满足基础的开发需求,我们就先尝试再一个windows机器上搭建一个Dapr self-hosted mode。详情参考官方文档:Overview of Dapr in Self-hosted mode
3、自托管模式安装
3.1、安装环境
Windows 10 企业版虚拟机。见下图:
3.2、安装 Dapr CLI 脚手架工具
run as adminitrator 打开Powershell,执行以下命令:
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
遇到了意外。。。。
好吧,换一种方式,直接从Github下载Release版本。我这时候最新的是1.8.1。
28.2MB百兆网下了10分钟,还是挺快的。解压缩后只有一个dapr.exe,将其放到C:\dapr文件夹下,将此路径添加到环境变量中。
完成后,打开PowerShell 输入 dapr -v 就可以看到下图的信息,说明dapr脚手架已经安装成功了。Runtime 为空是正常的,因为我们还没有初始化dapr。
3.3、初始化Dapr
在安装完成后,执行初始化操作,才能使得dapr可以正常的工作。在self-hosted mode下,初始化后dapr将会安装到你的本地机上,以一个进程的形式启动。同时,也会将side car二进制文件安装到本地机器上。
此外,默认初始化过程还创建了一个开发环境,帮助简化 Dapr 的应用开发。 这包括下列步骤:
- 运行一个用于状态管理\存储或发布\订阅消息代理的Redis容器实例
- 运行一个用于提供可观察性的Zipkin容器实例
- 创建具有上述组件定义的 默认组件文件夹
- 用于支持Local actor运行的Dapr placement服务容器实例
3.3.1 安装Windows版本Docker
在执行初始化之前,需要先安装Docker(注:如果不安装Docker也可以执行初始化,但是功能会受限,感兴趣的参考:Self-Hosted Mode No Docker)。进入到Docker官网下载Windows版本的Docker
点击后,进入下载页面,注意安装包的系统要求。确认无误后下载
红色框的Linux Kernel点击后跳转到一个安装配置页面,需要执行步骤1、2、3、4、5。同时,也需要开启BIOS中开始支持虚拟化。如果上述没有操作,Docker无法正常启动。
下载完Docker安装程序后,双击安装。注意:这里一定要选择上Use WSL2 instead of Hyper-V
上述选项默认选择,确认后,点击OK。等待安装完成~~~~~~~~~~~~~~~
重启后即可进入Docker Desktop。如果Linux Kernel相关配置没有设置,这里会显示Docker Service stopped... 然后程序退出。接下来,我们就可以开始初始化dapr了.
3.3.2 初始化Dapr
以管理员方式打开Powershell执行dapr init。等待完成,这是会从Docker hub拉取镜像,整个舒适化速度与网络有很大关系,耐心等待~~
完成后,输入dapr --version即可查看到详细信息。PS:由于网络太慢,我这里使用的其他已安装好darp的截图。
同时,在Docker Desktop中也为我们下载好了对应的镜像,并也启动了容器。
至此,Dapr的安装和初始化就完成了,接下来我们就可以使用dapr来进行微服务的开发了。下一节,使用Dapr的Service-to-Service invocation。我准备尝试下使用C#和Python实现它。希望一切顺利!