云原生开发框架dapr环境搭建:CLI安装和初始化

dapr 是微软的一个云原生(Cloud Native)开源项目,英文全称:Distributed Application Runtime,中文要翻译的话就是:分布式应用运行时。也就是一个运行时框架,面向云原生架构。

dapr官网地址:Dapr - Distributed Application Runtime

f008e1d74083fc480acf9760242ea214.png

1、开发环境总要求

要让dapr在本地开发环境运行起来,需要完成以下几个要求(我这里以Windows 10环境为例)。1、dapr CLI的安装 (命令行工具推荐使用PowerShell 7) 2、docker desktop (需要用到docker容器) 3、dapr 初始化安装运行时(Runtime )环境:daprd 4、最后如果是基于.net的开发应用程序,必须要有.net SDK ,这里推荐使用:.NET 5 SDK

 

2、dapr CLI 的安装

今天来记录下dapr开发环境的搭建,本来这个是很简单的步骤,但是由于国内网络限制的问题,无法按照dapr官方的步骤顺利完成。

dapr官方网站入门步骤参考:https://docs.dapr.io/zh-hans/getting-started/

但是按照此指导的第一步(安装dapr CLI)就会报错,无法进行下去。

powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"

如果执行的话,会直接报错:未能解析此远程名称。原因很简单,就是国内网络不通。

6dfc5428d40cbb7813f35109afeeabec.png

怎么办呢?也不能fq啊。不过不用担心,也有个办法:直接到github上去下载,然后将在线安装改成本地安装。

1.1、将dapr cli下载到本地

dapr cli github下载地址:(目前发布的最新版本 V1.4.0)

https://github.com/dapr/cligithub.com

找到Source Code 直接下载过来。

1574e0bc7f1f45f0aafe23b6ed2929eb.png

然后随便整个目录(比如我这里随便创建一个目录:D:\TechnologyLearning\dapr),解压。(解压后的文件夹为:cli-1.4.0)

1.2、修改命令,本地执行

现在可以把命令行,改成本地目录执行了。

powershell -Command "iwr -useb D:\TechnologyLearning\dapr\cli-1.4.0\install\install.ps1 | iex"

执行等着自动按照完成即可。

810cbd92ba6aca087b5978643cd146aa.png

为了文章截图,我又执行了一遍,相对于是reinstall。 你们第一次按照Runtime version 应该是n/a,因为此时运行时还没安装才对。【但是没关系,只要看到Dapr CLI is installed successfully. 说明程序是执行完了的。】

其实本质就是在C:\dapr安装了个dapr.exe,然后自动添加了系统环境变量。也就是说:不用脚本按照dapr cli,手动操作也是可以的。

1.3、检查cli是否安装成功

可通过命令dapr检查cli是否安装成功。(看到画的大大的dapr,说明cli安装成功。)

21d6327966e9ae2817d36d01fa1a3656.png

3、dapr 初始化(运行时安装)

2.1、初始化前需要安装docker容器

首先看看你电脑有没有安装docker,如果没有,到官网下载一个安装即可。这里不再赘述。

Docker Desktop 官方下载地址:Get Dockerdocs.docker.com

docker 一般是启用WSL2,如果没升级的话,可以参考微软官方的文档升级下即可。

旧版 WSL 的手动安装步骤docs.microsoft.com

2.2、运行命令 dapr init

接下来按照官方文档步骤初始化安装即可。

dapr init

4d1f46cd496bc5abc89f6c700f640443.png

这里可能网络会有点卡,因为也是需要去github中下载,我试了好几次才成功。

同时使用

dapr --version

 命令验证下。

看到Runtime version的版本号,说明运行时安装成功。CLI version:1.4.0 Runtime version: 1.4.2

注意:一定要看到Runtime version 不是n/a,如果有实际的版本号说明运行时安装成功。

dapr cli 和runtime 是两个东西,所以版本号不一样。

2.3、验证容器正在运行

dapr init 初始化命令,除了安装Runtime运行时,还在docker启动了几个容器。我们直接运行 docker ps 命令来验证下。

18003b2c7dfe0fefcd04a75f097ac395.png

当然不用命令行,在docker desktop可视化界面中看下也知道的。

5edb7a257ab9f68be8cfc8d464cb8bd7.png

可以看出,dapr 进行状态存储其实就是用redis缓存的,还用了Zipkin做为微服务链路追踪工具。

2.4 验证组件目录已初始化

dapr init 还创建了个组件文件夹目录(.dapr)

8dd423e88075acafd8b3099455e583b1.png

当然官方还是让用cmd命令行执行的(不是powershell)

explorer "%USERPROFILE%\.dapr\"

不喜欢用命令行的,直接文件夹打开看下好了。

到这里,说明dapr开发环境就顺利安装好了。


接下来可以简单试2个例子,开启dapr探索之旅。

4、官方的一个简单的例子

使用 Dapr 的内置 API

使用 Dapr 的内置 APIdocs.dapr.io

f33a717dc2b329b2df2cf3f65bc574eb.png

这个其实太简单了,没什么实际用途,就是证明下状态读取能力。

5、面向.NET 开发人员的dapr

作为.net 开发人员,建议升级到.net5 ,不用再用.net core了。

.NET 5 SDK 官方下载地址:Download .NET 5.0 (Linux, macOS, and Windows)

微软特意针对.net 开发人员整了个入门教程,参考做下随机获取天气的例子,就会对dapr有感觉了。

https://docs.microsoft.com/zh-cn/dotnet/architecture/dapr-for-net-developers/getting-started

例子就是前后端分离(daprFrontEnd、daprBackEnd),通过dapr进行api接口调用。

41b73a1b3987073089d7706862295dff.png

虽然例子的效果很简单,但是微软的这个例子值得一看。

更多的就不再赘述,按照此步骤,大家都应该能实现开发环境顺利安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序

在这篇文章中,您将学习如何使用Java对Map按照键或值进行排序。前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题。所以我决定写这样一篇文章。在Java中,有多种方法可以对Map…

GDB调试多进程|多线程程序

1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork&a…

Informatica bulk与normal模式的深入详解(转)

Bulk 方式进行目标数据的Load,是Informatica提供的一种高性能的Load数据方式。它利用数据库底层机制,依靠调用数据库本身提供的Utility来进行数据的加载。 使用Bulk方式 Load时,Informatica调用Utility进行Load,此方式将绕过数据库…

php学习 基础二

常用流程控制 IF语句的使用 if(判断语句) { 执行语句体 } 判断语句 :逻辑运算符号 值非0,执行语句 IF ELSE 语句使用 if(判断语句) { 执行语句体1 } else { …

沙漠上不小心挖了个洞,让这个地狱之门般的巨坑,燃烧了50年

全世界只有3.14 % 的人关注了爆炸吧知识在土库曼斯坦的卡拉库姆沙漠深处,有一个神奇的巨坑,直径约为70米,它无论白天还是黑夜,永远都在燃烧。这个坑的周围一片荒芜,坑里也没有任何明显在助燃的东西但坑内燃烧的大火近5…

不同用户同时并发测压_简单聊聊吞吐量(TPS)、QPS、并发数、响应时间(RT)概念...

1、 响应时间(RT) 响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别&…

读《沟通的方法》

众所周知,沟通在工作和生活中是一项非常重要的技能,但很多人却用不好这项技能,最近中秋假期,看完了得到 CEO 脱不花写的《沟通的方法》,觉得很有收获。脱不花没有上过大学,能有今天的成就,超强的…

java 数组下标 变量_Java基础语法:数组

一、简介描述:数组是相同类型数据的有序集合。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。基本特点:数组的长度是确定的。数组一旦被创建,它的大小就是不可以改变的。数组元素必须是相同类型&…

STP的初使化过程

STP初使化过程分为网桥角色(根网桥,非根网桥)的确定和端口角色(根端口,指定端口,阻塞端口)的确定,最终端口状态(稳定状态有blocking,forwarding)确定后,树就形成了。 STP端口状态的改变依赖于端口角色的改变和计时器的超时&#x…

CGRect vs CGPoint vs CGSize

l来自http://bengan.javaeye.com/blog/728457,感谢分享! ‍ ‍每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:其位置、宽度和高度。 我们使用Core Graphics结构宋定义边框矩形。对于边框,这通常表示由原点(CGPoin…

【转】URL编码(encodeURIComponent和decodeURIComponent)

转自http://blog.jhonse.com/archives/2032.jhonse 最近在用CI框架的时候,发现一个问题,URL的GET方式链接时,如果用中文字符的话,就会出现问题,提示:链接字符不通过,于是在网上找了很多方法&…

收藏!这10部关于数学的顶级纪录片,告诉孩子数学跟枯燥不沾边!

全世界只有3.14 % 的人关注了爆炸吧知识学好数学,必须从娃娃抓起!数学是人类的高级思维活动,越往顶层走,需要的各种思维能力就越多。所以,要想孩子数学好,首先要帮他“打牢思维的地基”。怎么打&#xff1f…

不确定规划及应用代码_性能测试划分之应用领域

性能测试划分性能测试划分有很多种,测试方法也有很多种,更确切的说是由于测试方法的不同决定了测试划分的情况,但在测试过程中性能测试的划分没有绝对的界限,常用的有压力测试、负载测试和并发用户测试等。性能测试的方法主要包括…

使用SysPrep制作Windows2008系统映像

Windows2008及R2的Sysprep程序位于C:\Windows\System32\Sysprep目录下。 前几天在做实验环境的时候发现一个奇怪的问题,成员服务器加入域时,提示加入域成功,但是本地管理员组里没有Domain Admins组,而且将域帐户加入本地管理员组时…

java监听网络连接_Android RxJava 之网络链接监听示范

RxJava在stream events处理上真的是一个利器。下面的示范代码显示如何用它来监听android设备的网络连接状况,实时接收change信息。IntentFilter filter new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);AndroidObservable.fromBroadcast(this, filter)…

老师“鬼话”全曝光!哈哈哈哈哈全国的老师都这样吗?

全世界只有3.14 % 的人关注了爆炸吧知识来源:少女兔(ID:iiilass)完来源:少女兔(ID:iiilass)作者 | 兔姐,宇宙疼老婆协会VIP会员,超人气美女漫画师&#xff0c…

windows2003——IIS

IIS转载于:https://blog.51cto.com/honglingjin2011/515383

需求分析 应该先写业务还是功能_一个套路,拆解常见数据分析需求

现实与Kaggle的区别现实环境的数据分析工作和Kaggle题目之间,最大的区别在于kaggle上的问题往往非常清晰。预测类问题,你只需要把预测做的足够准确就能拿高分。但在实际的业务环境中,你做了一个很牛逼的预测模型,换回来的只是业务…

如何在 ASP.NET CORE 中获取客户端 IP ?

咨询区 eadam:在 ASP.NET 中我可以用 Request.ServerVariables["REMOTE_ADDR"] 来获取客户端IP地址,请问在 ASP.NET Core 中我该如何实现呢?回答区 CodingYourLife如果你用的是 .NET 5,可以用内部提供的扩展方法来实现获…

jQuery EasyUI API 中文文档 - 链接按钮(LinkButton)

LinkButton 链接按钮用 $.fn.linkbutton.defaults 重写了 defaults。用法示例1. <a href"#" id"btn" iconCls"icon-search">easyui</a> 1. $(#btn).linkbutton({ 2. plain:true 3. }); 4. $(#btn).linkbutton(disable); …