隐藏

dubbo环境的简单搭建

发布:2023/9/6 9:51:27作者:管理员 来源:本站 浏览次数:1167

一、dubbo架构


高性能的Java RPC框架,dubbo被阿里捐献给了apache。dubbo架构:




节点角色说明


   Provider 暴露服务的服务提供方


   Consumer 调用远程服务的服务消费方


   Registry 服务注册与发现的注册中心


   Monitor 统计服务的调用次数和调用时间的监控中心


   Container 服务运行容器


调用关系说明


   服务容器负责启动,加载,运行服务提供者。


   服务提供者在启动时,向注册中心注册自己提供的服务。


   服务消费者在启动时,向注册中心订阅自己所需的服务。


   注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。


   服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。


   服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。


二、Zookeeper注册中心


dubbo官方文档可知,dubbo依赖注册中心,所以使用dubbo,需要提前搭建好注册中心。

dubbo官网-》文档-》用户文档-》参考手册-》注册中心参考手册-》推荐使用Zookeeper注册中心。


1、Zookeeper下载


Zookeeper官网下载:https://zookeeper.apache.org/,我下载的是zookeeper-3.5.9版本:


下载完,解压后,新建个文件夹data,用来存放后期临时数据(随便起名字和路径,只要与后面配置文件中dataDir指向的地址一致就行)


在conf文件夹中新建zoo.cfg文件(将zoo_sample.cfg内容复制到zoo.cfg里进行修改),调整dataDir即可:


2、zoo.cfg参数配置说明


(1)tickTime=2000:通信心跳数,Zookeeper服务器心跳时间,单位毫秒

Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。

它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2tickTime)

(2)initLimit=10:Leader和Follower初始通信时限

集群中的follower跟随者服务器与leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

投票选举新leader的初始化时间

Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。

Leader允许Follower在initLimit时间内完成这个工作。

当已经超过 10个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 102000=20 秒

(3)syncLimit=5:Leader和Follower同步通信时限

集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。总的时间长度就是 5*2000=10秒

在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。

如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。

(4)dataDir:数据文件目录+数据持久化路径

保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。

(5)clientPort=2181:客户端连接端口

这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。


3、启动Zookeeper


进到bin目录下,cmd,执行zkServer.cmd启动Zookeeper会报如下错误:



经查找原因是,有点版本下载下来目录中没有lib文件夹,处理办法,去官网下载相应版本的bin的包,将apache-zookeeper-3.5.9-bin.tar.gz解压后文件夹中的lib包复制到apache-zookeeper-3.5.9.tar.gz解压后的文件夹中,重新cmd里启动,可成功启动,显示绑定了2181端口:


4、测试Zookeeper


zookeeper启动好了,接下来测试一下,还是bin下cmd,执行zkCli.cmd,打开zookeeper客户端:ls /查看一下根目录节点。至此,注册中心就搭建好了。


   如果启动客户端报错:Will not attempt to authenticate using SASL (unknown error),可能是你上一步不小心把启动的zk关掉了又,也可能是其他原因。


三、监控中心


dubbo2.6版本以后都是springboot方式启动,可以直接运行main方法,或者使用 java -jar 很方便;

2.6版本之前都是war包-》web项目-》放到tomcat里。


1、dubbo-admin新版本安装


从github下载dubbo admin项目:https://github.com/apache/dubbo-admin,解压;

新版本的dubbo-admin已经修改了方式,使用了前后端分离的方式,结构中的dubbo-admin-server是我们的服务后端,dubbo-admin-ui是我们的前端:


2、安装node.js环境


前端又是使用的node.js,所以想要启动dubbo-admin首先需要安装node.js环境,进入nodejs官网https://nodejs.org/en/下载,一路next安装即可(没必要下载最新的,使用最多人使用的版本即可)




安装完,命令行测试一下:



我们的nodejs环境已经安装完成。


3、启动dubbo-admin-server服务端


1)修改配置

修改【dubbo-admin-develop\dubbo-admin-server\server\src\main\resource】下的application.properties 配置文件,注意配置zk的进程路径,必须配置你的zk运行的ip和端口。(改成自己服务器或虚拟机的地址,如果是在本地搭建的则不需要修改)


默认端口为8080,如果需要更改,加入配置 server.port=<端口号>,此处修改为8081


   注:此处可以看出登录的用户名密码默认root/root


2)启动应用

配置完成后,第一种方式-》idea中启动【dubbo-admin-develop\dubbo-admin-server\src\main\java\org\apache\dubbo\admin\DubboAdminApplication.java】运行即可。


此处用第二种方式启动方式-》命令行操作:

进入dubbo-admin-server 目录,打开cmd窗口,在当前目录下执行以下两条命令:


mvn install -Dmaven.test.skip=true  //跳过测试环节


进入dubbo-admin-server\target 目录,执行jar包 :


java -jar dubbo-admin-server-0.2.0-SNAPSHOT.jar



服务端就此启动完成,在8081端口。


4、构建dubbo-admin-ui


1)配置国内taobao镜像: npm config set registry http://registry.npm.taobao.org/

查看镜像:npm get registry


2)进入dubbo-admin-ui文件夹下执行命令:


npm install  //安装依赖,进行mode_modules依赖构建【构建成功后会生成node_modules文件夹】


npm run dev  //启动Vue项目


   注:如果失败或者停留在某个地方很久可以试一下换镜像:

   npm config set registry https://registry.npm.taobao.org

   npm config set registry http://registry.cnpmjs.org/

   npm config set registry https://registry.npmjs.org/

   npm cache clean --force 换完源之后执行这个命令清除一下缓存


   注:修改前端工程端口及配置信息:

   如果修改了server的启动端口那么要相应修改ui模块里面的连接server的端口设置修改要让他们统一。打开文件【dubbo-admin-develop\dubbo-admin-ui\config\index.js】,找到【proxyTable】,将里面的target改成我们后端服务的ip加端口,然后保存。 但是我这个版本并没有这样操作修改也能访问!!!!不知道是内置了还是什么情况待研究!


5、访问dubbo-admin


http://localhost:8081/root/root 登录管理控制台: