1介绍Dapr是一个可移植的、事件驱动的运行时环境,可以让任何开发者轻松构建弹性的、无状态的和有状态的应用程序,运行在云平台或边缘计算中,它还支持多种编程语言和开发框架。Dapr支持多种语言,包括C++/Go/Java/JavaScript/Python/Rust/.NET/PHP等。目前可用的构建块如下:BuildingBlockDescriptionServiceInvocationCross-ServiceInvocation允许远程方法调用(包括重试),无论位置如何,只要服务托管在受支持的环境中即可。状态管理独立的状态管理,使用键/值对作为存储机制,可以轻松地让长时间运行、高可用的有状态服务和无状态服务在您的应用程序中同时运行。状态存储是可插拔的,目前支持AzureCosmosDB、AzureSQLServer、PostgreSQL、AWSDynamoDB和Redis作为状态存储介质。发布订阅发布事件和订阅主题。资源绑定Dapr的绑定是建立在事件驱动架构之上的。通过建立触发器和资源的绑定,可以在不借助消息队列的情况下,从任何外部源(如数据库、队列、文件系统等)接收和发送事件,实现灵活的业务场景。ActorsActor模型=状态+行为+消息。一个应用程序/服务由多个Actor组成。每个Actor都是一个独立的运行单元,具有隔离的运行空间。在隔离空间中,它具有独立的状态和行为,无需外界干预。Actor之间通过Messages进行交互,同时每个actor只能被单线程执行,既有效避免了数据共享和并发问题,又保证了应用的可扩展性。Dapr在Actor模式中提供了很多功能,包括并发、状态管理、actor激活/停用的生命周期管理,以及用于唤醒actor的定时器和提醒。可观察性Dapr记录指标、日志、链接以调试和监控Dapr和用户应用程序的健康状况。Dapr支持分布式追踪,利用W3C追踪上下文标准和开放的遥测技术,可以轻松诊断生产环境中服务间的网络调用,并发送到不同的监控工具。SecretDapr提供密钥管理,支持与公有云和本地Secret存储集成,用于应用程序检索。Sidecar和managedDapr使用sidecar架构模型提供相应的功能,这也是Kubernetes中很常见的一种模型:Dapr可以自托管,也可以托管在Kubernetes上。一般我们会托管在Kubernetes上。Dapr不是服务网格。它们有重叠的部分,也有自己独特的特点。如何选择取决于具体需求。事实上,它们可以一起使用。2Dapr本地安装2.1下载我们直接从Github上下载:https://github.com/dapr/cli/r...,解压到某个目录,然后添加到环境变量中:exportPATH=$PATH:/Users/larry/Software/dapr测试一下,查看版本:$dapr--versionCLIversion:1.9.1Runtimeversion:n/a2.2要在本地环境中初始化dapr,首先确保Docker已经安装并启动成功地。$docker--versionDockerversion19.03.13,build4484c46d9d接着执行以下命令开始化:$daprinit?跳转到超空间...??将从DockerHub中拉取容器镜像??安装运行时版本1.9.3↘下载二进制文件和设置组件...Dapr运行时安装到/Users/larry/.dapr/bin,如果你想直接运行daprd,你可以运行以下将它添加到你的路径:exportPATH=$PATH:/Users/larry/.dapr/bin?下载二进制文件并设置组件...?下载二进制文件并完成组件设置。??daprd二进制文件已安装到/Users/larry/.dapr/bin。??dapr_placement容器正在运行。??dapr_redis容器是正在运行。??dapr_zipkin容器正在运行。??使用`dockerps`检查正在运行的容器。?成功!Dapr已启动并正在运行。要开始,请转到此处:https://aka.ms/dapr-getting-started注意会在用户目录.dapr安装对应文档这时候查看版本信息不一样了:$dapr--versionCLIversion:1.9.1Runtimeversion:1.9.3查看Docker容器情况,也看到启动了多个实例:$dockerpsCONTAINERIDIMAGE命令创建状态端口名称110165beae0ddaprio/dapr:1.9.3"./placement"2分钟前Up2分钟0.0.0.0:50005->50005/tcpdapr_placement346be0cdcb7eredis:6"docker-entrypoint.s..."3分钟前Up3minutesago.0.0.00:6379->6379/tcpdapr_redis42a8279db947openzipkin/zipkin"start-zipkin"3minutesagoUp3minutes(healthy)9410/tcp,0.0.0.0:9411->9411/tcpdapr_zipkin3trydapr3.1启动一个应用启动一个空白应用如下,同时也会启动一个Sidecar,并开启3500端口:daprrun--app-idmyapp--dapr-http-port35003.2状态管理我们刚刚打开了3500端口,然后我们就可以更新状态了,如下:$curl-XPOST-H"Content-Type:application/json"-d'[{"key":"name","value":"LarryDeng"}]'http://localhost:3500/v1.0/state/statestore$curl-XPOST-H"内容-Type:application/json"-d'[{"key":"webSite","value":"www.pkslow.com"}]'http://localhost:3500/v1.0/state/statestoreView状态:$curlhttp://localhost:3500/v1.0/state/statestore/name"LarryDeng"$curlhttp://localhost:3500/v1.0/state/statestore/webSite"www.pkslow.com"因为状态是通过Redis保存的,所以我们可以直接到Redis中查看:$dockerexec-itdapr_redisredis-cli127.0.0.1:6379>keys*1)"myapp||name"2)"myapp||webSite"127.0.0.1:6379>hgetall"myapp||name"1)"data"2)"\"LarryDeng\""3)"version"4)"1"127.0.0.1:6379>hgetall"myapp||网站"1)"数据"2)"\"www.pkslow.com\""3)"版本"4)"1"127.0.0.1:6379>使用以下界面退出删除测试:curl-v-XDELETE-H"Content-Type:application/json"http://localhost:3500/v1.0/state/statestore/name3.3daprdashboardDapr为大家提供了一个管理界面,使用以下命令启动:$daprdashboardDaprDashboardrunningonhttp://localhost:8080打开界面,可以看到我们刚刚启动的Application:还可以查看一些组件、配置等信息:我们还可以查看一些Tracing信息,打开:http://localhost:9411/zipkin/4总结由于本次实验只是dapr的本地版本,还有很多功能没有体验到.以后有机会我们继续学习
