window下安装zookeeper
- Zookeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的大量节点。它提供了一个可靠的分布式数据节点存储和协调机制,可以用于实现分布式锁、配置管理、命名服务等功能。
- Zookeeper使用树形结构的数据模型来存储和管理数据,并提供了强一致性和高可用性的特性。
- 在分布式系统中,Zookeeper常被用作注册中心,用于服务发现和服务注册,Dubbo框架也可以使用Zookeeper作为其注册中心。
-
下载zookeeper :我们下载3.7.1的版本!解压zookeeper
-
-
Apache ZooKeeper的官方网站: https://zookeeper.apache.org/
-
zookeeper 历史版本下载:https://archive.apache.org/dist/zookeeper/
-
zookeeper 官方下载页面:https://zookeeper.apache.org/releases.html
下载带bin的:
apache-zookeeper-3.7.1-bin.tar.gz和apache-zookeeper-3.7.1.tar.gz是Apache ZooKeeper的两个不同的发行版本。它们之间的区别如下:- apache-zookeeper-3.7.1-bin.tar.gz:这是二进制发行版,包含了预编译的可执行文件和所需的库文件。您可以直接使用这个发行版来安装和运行ZooKeeper,而无需进行编译。
- apache-zookeeper-3.7.1.tar.gz:这是源代码发行版,包含了ZooKeeper的完整源代码。如果您希望自定义编译选项或对源代码进行修改,您可以选择这个发行版。使用源代码发行版需要您具备编译和构建软件的能力。
一般情况下,如果您只是想要安装和使用ZooKeeper,推荐使用二进制发行版(apache-zookeeper-3.7.1-bin.tar.gz)。如果您有特定的需求,需要自定义编译或修改源代码,那么您可以选择源代码发行版(apache-zookeeper-3.7.1.tar.gz)。
请注意,无论您选择哪个发行版,都需要遵循官方文档中提供的安装和配置指南来正确安装和使用ZooKeeper。
-
-
运行/bin/zkServer.cmd ,初次运行会闪退,原因:没有zoo.cfg配置文件
解决方案:编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因。
原因:java.lang.IllegalArgumentException: D:\SoftWare\Zookeeper\apache-zookeeper-3.6.1-bin\apache-zookeeper-3.6.1-bin\bin…\conf\zoo.cfg文件丢失
-
修改zoo.cfg配置文件
将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可
修改
zoo.cfg
中 存储ZooKeeper数据的目录路径为:/zkdata# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # 存储ZooKeeper数据的目录路径, dataDir=/zkdata # 客户端连接的端口号 clientPort=2181
上述的配置文件是用于配置ZooKeeper服务器的参数。以下是各个参数的解释:
- tickTime:ZooKeeper使用的基本时间单位,以毫秒为单位。它用于设置心跳间隔、最小会话超时时间等。在这里,tickTime被设置为2000毫秒。
- initLimit:初始同步阶段可以使用的最大心跳数。在初始同步阶段,Leader服务器将等待Follower服务器与其同步。在这里,initLimit被设置为10个心跳。
- syncLimit:发送请求并获得确认之间可以经过的最大心跳数。在这里,syncLimit被设置为5个心跳。
- dataDir:快照文件存储的目录。这里的示例目录是/tmp/zookeeper。请注意,这里只是举例,不建议将快照文件存储在/tmp目录中。(可写相对路径)
- clientPort:客户端连接的端口号。在这里,clientPort被设置为2181。
未改动配置文件的截图:
修改完成后再次启动zookeeper (切记用管理员方式打开)
-
在Apache ZooKeeper 3.7.1的bin目录下,每个.cmd文件的含义如下:
xxx.cmd在Windows系统使用,xxx.sh在Unix/Linux系统使用。
- zkCleanup.cmd: 用于清理ZooKeeper服务器的临时文件和日志文件。
- zkCli.cmd: 启动ZooKeeper的命令行客户端,可以与ZooKeeper服务器进行交互。
- zkEnv.cmd: 设置ZooKeeper环境变量的脚本文件。
- zkGenConfig.cmd: 生成ZooKeeper服务器的配置文件模板。
- zkServer.cmd: 启动ZooKeeper服务器。
- zkServer-initialize.cmd: 初始化ZooKeeper服务器,生成必要的文件和目录。
- zkServer.sh: 在Unix/Linux系统上启动ZooKeeper服务器的脚本文件。
- zkTxnLogToolkit.cmd: 用于分析和处理ZooKeeper事务日志的工具。
这些.cmd文件是用于管理和操作ZooKeeper服务器的工具和脚本。您可以使用这些文件来启动、停止、配置和与ZooKeeper服务器进行交互。
-
使用zkCli.cmd测试(切记用管理员方式打开)
-
ls /:列出zookeeper根下保存的所有节点
在使用 zkCli.cmd 打开ZooKeeper命令行客户端后,输入"ls /"命令是用来列出ZooKeeper根节点下的所有子节点。ZooKeeper是一个分布式协调服务,它以类似文件系统的层次结构组织数据,其中根节点是最顶层的节点。通过输入"ls /"命令,您可以获取根节点下的所有子节点的列表。这些子节点可以是持久节点或临时节点,它们存储了在ZooKeeper中进行分布式协调所需的数据。
报错多是 ZooKeeper服务器(zkServer.cmd)和 ZooKeeper的命令行客户端(zkCli.cmd)没有使用管理员方式打开
-
create -e /Pikachu 666:创建一个Pikachu节点,值为666
“create -e /Pikachu 666” 是一条ZooKeeper命令,用于在ZooKeeper中创建一个名为"/Pikachu"的临时节点,并将其值设置为"666"。这个命令可以通过ZooKeeper的命令行界面(如zkCli.cmd)或通过ZooKeeper的API来执行。
在这个命令中,“create"是指示要创建节点的操作,”-e"是一个选项,表示要创建一个临时节点(ephemeral node),该节点在客户端断开连接后会自动删除。“/Pikachu"是要创建的节点的路径,可以是任何有效的ZooKeeper路径。“666"是要为节点设置的值。
总结起来,这个命令的意思是在ZooKeeper中创建一个名为”/Pikachu"的临时节点,并将其值设置为"666”。 -
get /Pikachu:获取/Pikachu节点的值
-
我们再来查看一下节点:ls /
-
window下安装node.js
- dubbo-admin 是一个前后端分离的项目。前端使用vue,后端使用springboot,安装 dubbo-admin 其实就是部署该项目。
- 我们将dubbo-admin安装到开发环境上。要保证开发环境有jdk,maven,node.js。
- 安装node.js**(如果当前机器已经安装请忽略)**
提示:我尝试安装了最新版,结果提示项目使用的语法格式太老,新版node.js不支持,所以此处建议安装旧版本node.js (我自己安装的v16.16.0版本可以使用,如果你的版本过高导致不能使用,建议卸载降级) - 因为前端工程是用vue开发的,所以需要安装node.js,node.js中自带了npm,后面我们会通过npm启动
官网下载地址:https://nodejs.org/en
下载node.js v16.16.0版本:https://nodejs.org/dist/v16.16.0/
下载完毕之后,根据这个博客进行设置即可:https://blog.csdn.net/qq_42006801/article/details/124830995
注意:经过尝试,博客里的 测试默认位置是否更改成功 这一步骤。
-
让更改node.js的文件夹权限,我实测没有更改文件夹的权限,可以成功。
-
若执行命令 npm install express -g 出现报错。可能是因为当前版本不支持旧版 -g 的语法导致,使用下列命令替换即可解决。
npm install express -g # 将报错的命令 替换为下面的命令 npm install express --location=global # 安装常用express模块
window下安装dubbo-admin
- Dubbo-Admin是一个用于管理和监控Dubbo服务的Web应用程序。它提供了一个用户友好的界面,可以方便地查看和管理Dubbo服务的注册中心、提供者和消费者。
- 通过Dubbo-Admin,您可以实时监控服务的运行状态、查看服务的调用情况、配置服务的路由规则等。
- 它是Dubbo框架的一个重要组件,帮助简化了Dubbo服务的管理和监控工作。
我们这里来安装一下:
1、下载dubbo-admin
Github地址 :https://github.com/apache/dubbo-admin/tree/develop
2、解压进入目录
修改 dubbo-admin-develop\dubbo-admin-server\src\main\resources\application.properties 指定你配置的ZooKeeper服务器的地址,本例中未修改,因为是在本机测试启动的
# 服务器端口号
server.port=38080
# Dubbo协议端口号
dubbo.protocol.port=30880
# Dubbo应用质量服务端口号
dubbo.application.qos-port=32222
# 指定注册中心、配置中心和元数据报告的地址
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181
# 设置了管理员的用户名和密码,用户名为root,密码也为root。
admin.root.user.name=root
admin.root.user.password=root
# 设置了会话超时时间为一个小时,默认值为3600000毫秒。
admin.check.sessionTimeoutMilli=3600000
# 设置管理员检查令牌超时时间为3600000毫秒。
admin.check.tokenTimeoutMilli=3600000
# dubbo config
# 这是一个Dubbo的配置文件。其中,dubbo.application.name设置了应用的名称为dubbo-admin,dubbo.registry.address设置了注册中心的地址为${admin.registry.address}。
dubbo.application.name=dubbo-admin
dubbo.registry.address=${admin.registry.address}
3、在项目目录下(dubbo-admin-develop)运行cmd并使用下列命令打包dubbo-admin项目
mvn clean package -Dmaven.test.skip=true
第一次打包的过程有点慢,需要耐心等待!直到成功!
4、在cmd窗口执行 \dubbo-admin-develop\dubbo-admin-distribution\target
下的dubbo-admin-0.5.0-SNAPSHOT.jar
java -jar dubbo-admin-server-0.5.0.jar
【注意:zookeeper的服务一定要打开!】
出现这个界面说明Dubbo-Admin的后端子项目启动成功!!!
5、接下来我们去启动前端子项目
在 \dubbo-admin-develop\dubbo-admin-ui
目录下,进入cmd窗口并输入下列命令
npm run dev
"npm run dev"命令用于JavaScript开发,用于启动本地开发服务器。通常情况下,它会运行package.json文件中"scripts"部分中键名为"dev"的脚本。这个命令通常在使用Node.js和npm(Node Package Manager)构建的项目中使用,用于启动开发环境、编译代码,并在开发过程中监视变化。
至此,前端子工程启动完毕。(提示:首次输入上述命令报错的,可能是语法问题导致,重新开启cmd窗口,再次运行相同命令即可成功)
6、浏览器输入http://localhost:38080/,用户名密码默认都是root
Dubbo-Admin(监控管理后台)前端页面标签介绍
标签选项总览
新版Dubbo-Admin前端页面的功能介绍:
-
服务查询: 可以查看已注册的Dubbo服务列表,包括服务提供者和消费者的信息。可以查找特定服务并查看其详细信息。
-
服务治理: 用于管理Dubbo服务的运行状态和配置。可以监控服务的性能指标,如调用次数、响应时间等。还可以进行服务的上下线操作。
-
服务测试: 提供了对Dubbo服务进行测试的功能。可以选择特定的服务和方法,并提供测试参数进行调用和验证。
-
接口文档: 生成Dubbo服务的接口文档,方便开发人员查阅和使用。可以查看服务的方法、参数和返回值等信息。
-
服务Mock: 用于模拟Dubbo服务的行为,方便进行开发和测试。可以定义模拟的服务行为和返回结果。
-
服务统计: 提供Dubbo服务的统计信息和报表。可以查看服务的调用次数、成功率、响应时间等指标,并生成图表展示。
-
配置管理: 用于管理Dubbo服务的配置信息。可以设置服务的参数、路由规则、负载均衡策略等。
服务治理标签下的选项
服务治理标签下的选项功能介绍:
-
条件路由: 条件路由功能可以根据条件对服务进行路由,例如根据请求参数、请求头等条件进行路由。可以配置多个条件路由规则,实现不同条件下的服务路由。
-
标签路由: 标签路由功能可以根据服务的标签进行路由,将请求路由到具有相同标签的服务提供者。可以根据需要给服务添加标签,然后配置标签路由规则。
-
Mesh路由: Mesh路由功能可以根据服务之间的依赖关系进行路由,将请求路由到最近的服务提供者。可以根据服务之间的依赖关系配置Mesh路由规则。
-
黑白名单: 黑白名单功能可以对服务进行访问控制,只允许特定的IP地址或者服务消费者访问服务。可以配置黑名单或者白名单规则,实现访问控制。
-
动态配置: 动态配置功能可以实时修改服务的配置参数,无需重启服务。可以根据需要修改服务的配置,例如超时时间、重试次数等。
-
权重调整: 权重调整功能可以调整服务提供者的权重,实现负载均衡。可以根据服务提供者的性能和负载情况,调整其权重,实现更加均衡的负载分配。
-
负载均衡: 负载均衡功能可以根据负载均衡算法将请求路由到不同的服务提供者,实现负载均衡。可以选择不同的负载均衡算法,例如轮询、随机、一致性哈希等。
服务Mock标签下的选项
服务Mock标签下的选项功能介绍:
新版Dubbo-Admin前端页面的服务Mock标签下的规则配置功能是用来配置和管理服务的模拟数据规则。通过规则配置,可以模拟服务的返回数据,方便进行接口测试和调试。具体功能介绍如下:
-
新增规则: 可以新增一个服务的模拟数据规则。在新增规则时,需要指定服务的接口方法、参数、返回数据等信息。
-
编辑规则: 可以编辑已存在的服务模拟数据规则。通过编辑规则,可以修改服务的接口方法、参数、返回数据等信息。
-
删除规则: 可以删除已存在的服务模拟数据规则。删除规则后,服务将不再返回模拟数据。
-
查看规则: 可以查看已存在的服务模拟数据规则的详细信息,包括接口方法、参数、返回数据等。
使用方法:
- 在Dubbo-Admin前端页面中,点击服务Mock标签,进入服务Mock页面。在该页面中,可以进行规则的新增、编辑、删除和查看操作。通过填写相应的信息,配置服务的模拟数据规则。
- 请注意,服务Mock功能仅用于开发和测试环境,不建议在生产环境中使用。
服务统计标签下的选项
服务统计标签下的选项功能介绍:
- 服务统计: 服务统计功能用于统计和监控服务的调用情况,包括服务的调用次数、成功率、平均响应时间等指标。可以实时查看服务的运行情况,帮助发现潜在的性能问题或异常情况。
- 服务关系: 服务关系功能用于查看服务之间的依赖关系和调用关系,包括服务的提供者和消费者。可以查看服务之间的关系图和调用链路,帮助理解服务之间的交互关系,便于排查和分析问题。
通过使用服务统计和服务关系功能,可以更好地了解和监控Dubbo服务的运行情况,以及服务之间的关系,有助于进行性能优化和故障排查。
可能遇到的问题
-
此教程中使用的是dubbo-admin-develop,端口一般不会冲突,无需更改。但是若是下载的是其他分支,例如:dubbo-admin-master,后端子项目默认使用的是8080端口,由于zookeeper注册中心也是在本机环境中启动,所以会占用8080端口,由此会造成冲突,导致dubbo-admin后端子项目启动失败。
-
解决办法:
-
将
\dubbo-admin-server\src\main\resources\application.properties
文件里的8080端口更改为别的即可。# 此处更改为了8081端口 server.port=8081
-
由于后端子项目的端口号发生了更改,所以前端项目里对应也得修改。在
\dubbo-admin-ui\vue.config.js
修改8080端口。devServer: { /* 这是前端页面访问的端口号,例如:http://localhost:8082 */ port: 8082, historyApiFallback: { rewrites: [ {from: /.*/, to: path.posix.join('/', 'index.html')}, ], }, publicPath: '/', proxy: { '/': { /* 这是和后端工程交互的端口号 */ target: 'http://localhost:8081/', changeOrigin: true, pathRewrite: { '^/': '/' } } }
-