Dapr在Java中的实践 之 环境准备
Dapr简介
Dapr (Distributed Application Runtime)是一个可移植的、事件驱动的运行时,它使任何开发人员都可以轻松地构建运行在云和边缘上的弹性、无状态和有状态的应用程序,并支持语言和开发人员框架的多样性。Dapr利用Sidecar架构的优势,帮助我们解决构建微服务所带来的挑战,并保持代码与平台无关。

从上面的架构图看出,Dapr包括如下几个模块:
- 服务调用(Service-to-service Invocation):通过服务调用,服务可以使用 gRPC 或 HTTP 这样的标准协议来发现并可靠地与其他服务通信。
- 状态管理(State Management):独立的状态管理,使用键值对作为存储机制,可以轻松的使长时运行、高可用的有状态服务和无状态服务共同运行在我们的服务中。
- 发布订阅(Publish and Subscribe):发布事件和订阅主题。生产者将消息发送到某个主题(Topic),但不知道接收消息的服务;消费者将订阅该主题并收到它的消息,但不知道哪个服务生产了这些消息。
- 资源绑定(Resource Bindings):通过建立触发器与资源的绑定,可以从任何外部源(例如数据库,队列,文件系统等)接收和发送事件,而无需借助消息队列,即可实现灵活的业务场景。
- Actors:Actor是一个独立的运行单元,拥有隔离的运行空间,在隔离的空间内,其有独立的状态和行为,不被外界干预。Actor之间通过消息进行交互,而同一时刻,每个Actor只能被单个线程执行,这样既有效避免了数据共享和并发问题,又确保了应用的伸缩性。
- 可观测性(Observability):记录指标(metric)、日志(log)、链路(trace)以调试和监视Dapr和服务的运行状况。
- 密钥管理(Secrets):支持与公有云和本地的密钥存储集成,以供服务检索使用。
- 配置管理(Configuration):通过配置API在配置存储中检索和订阅服务的配置项。
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
安装 Docker
这里以Windows 10系统为例,安装 Docker。
安装 Hyper-V
Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化。Hyper-V 可用于 64 位 Windows 10 专业版、企业版和教育版。 它无法用于家庭版。
点击“小窗户”,然后再点击“设置”,如下图:

在搜索框中输入“启用或关闭Windows功能”,如下图:

点击“启用或关闭Windows功能”后,勾选“Hyper-V”所有选项,如下图:

点击“确定”,等一会儿就安装好了。(可能需要重启电脑)
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
安装 Docker Desktop
访问https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe下载,双击Docker Desktop Installer.exe运行安装程序。按照安装向导上的说明授权安装程序并继续进行安装。
安装完成后,启动Docker Desktop,等一会儿初始化完成后,将启动入门教程:

这个教程包括一个简单的练习,以构建示例Docker镜像,将其作为容器运行,将映像推送并保存到Docker Hub。

安装 Dapr CLI
访问https://github.com/dapr/cli/releases下载所需的 Dapr CLI,如果是Linux系统可以下载dapr_linux_amd64.tar.gz;如果是Windows系统,可以下载dapr_windows_amd64.zip;如果是macOS,可以下载dapr_darwin_amd64.tar.gz。
这里以Windows系统为例。
解压到一个目录中,并把这个目录添加到系统环境变量中,然后执行如下命令验证一下:
dapr --version
如果显示如下效果就说明安装成功了:

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
初始化 Dapr
执行如下命令:
dapr init
它会帮我们创建如下内容:
- 运行一个用于状态存储和消息代理的Redis容器实例
- 运行一个用于提供可观察性的Zipkin容器实例
- 创建具有上述组件定义的默认组件文件夹:用户目录中的.dapr文件夹
- 运行用于本地演员支持的Dapr Placement服务容器实例
显示效果如下:

执行如下命令验证一下:
docker ps
如果显示如下效果就说明初始化成功了:

此时,访问http://localhost:9411/zipkin/就可以看到:

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
启动 Dapr Dashboard
执行如下命令:
dapr dashboard -p 9999
显示效果如下:

再访问http://localhost:9999/就可以看到:

最后,感谢你这么帅,还给我点赞。
微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
获取12本Java必读技术书籍

Dapr在Java中的实践 之 环境准备的更多相关文章
- Java中jdk安装与环境变量配置
Java中jdk安装与环境变量配置 提示:下面是jdk1.7和jdk1.8的百度网盘链接 链接:https://pan.baidu.com/s/1SuHf4KlwpiG1zrf1LLAERQ 提取码: ...
- Java中如何判断当前环境是大端字节顺序还是小端字节顺序
Java非字节类型的基本类型,除了布尔型都是由组合在一起的几个字节组成的.这些数据类 型及其大小总结在表 2-1 中. 表:基本数据类型及其大小 数据类型 大小(以字节表示) Byte 1 Char ...
- java中HashMap在多线程环境下引起CPU100%的问题解决(转)
最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...
- java中HashMap在多线程环境下引起CPU100%的问题解决
最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...
- JAVA中为什么要配置环境变量?怎么配置环境变量?
1.为什么要配置环境变量? 答:为了让javac命令(编译命令)和Java命令(运行命令)能在任何文件夹都能运行. 2.怎么配置环境变量? JAVA_HOME : D:\develop\Java\jd ...
- Java学习日记8-包、环境变量和访问控制
Java中的包.环境变量和访问控制 一.java中的包 Java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分 ...
- React 与 Redux 在生产环境中的实践总结
React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...
- Java 理论和实践: 了解泛型 识别和避免学习使用泛型过程中的陷阱
Brian Goetz (brian@quiotix.com), 首席顾问, Quiotix 简介: JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进.但是,对于初次使用泛 ...
- Java入门到实践系列(2)——Java环境搭建
一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...
- Java线程池实现原理及其在美团业务中的实践
本文转载自Java线程池实现原理及其在美团业务中的实践 导语 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供 ...
随机推荐
- EF Core如何使用DbFirst
首先安装好 Microsoft.EntityFrameworkCore.SqlServer [ef 的数据库驱动程序 如果是其他数据库这个要换成对应的数据库驱动] Microsoft.Entity ...
- Java 计算两个日期的时间间隔
@Test public void durationTest(){ Temporal begin = LocalDateTime.of(2000,1,1,0,0); Temporal end = Lo ...
- Dijkstra(迪杰斯特拉)算法C++实现&讲解
Dijkstra迪杰斯特拉算法及C++实现 Dijkstra算法是典型的最短路径路由算法,用来计算一个节点到其他所有节点的最短路径.算法的基本思想和流程是:1. 初始化出发点到其它各点的距离dist[ ...
- kubernetes(k8s) 中安装kuboard面板
kubernetes(k8s) 中安装kuboard面板 01 - 背景及安装 Kuboard 是一款专为 Kubernetes 设计的免费管理界面,兼容 Kubernetes 版本 1.13 及以上 ...
- window远程桌面之通过修改端口链接
windows开启及连接远程桌面 技术标签: 后端开发 windows 桌面 -> 此电脑 图标右键 -> 属性 远程设置 远程桌面 -> 修改为允许远程连接到 ...
- MySQL(十一)索引的分类和创建原则
索引的创建与设计原则 1 索引的声明与使用 1.1 索引的分类 MySQL索引包括普通索引.唯一性索引.全文索引.单列索引.多列索引和空间索引 按照逻辑结构划分,主要有四种:普通索引.唯一性索引. ...
- Linux网络管理入门
根据自己的需要来设置Linux的一些属性 网络状态查看 在终端输入ifconfig可以查看网络状态 # ifconfig eth0: flags=4163<UP,BROADCAST,RUNNIN ...
- Go语言基础: goroutine和通道
并发编程表现为程序由若干个自主的活动单元组成. goroutine 在Go语言里,每一个并发执行的活动称为goroutine.当一个程序启动时,只有一个goroutine来调用main函数,称之为主g ...
- DeFi-W3
Gas Fee 每一笔交易都会产生Gas Fee. GWei ETH的最小单位 出价(gas fee)的高低会影响交易上联的速度,越快就价格越高. gas fee是跟具体的计算量有关的 Smart c ...
- 重新实现hashCode()方法
在Java中,为了让对象在集合中能够更高效地进行查找和比较,我们通常需要重写对象的equals()和hashCode()方法.其中,equals()方法用于比较两个对象是否相等,而hashCode() ...