高性能的Java RPC框架,dubbo被阿里捐献给了apache。dubbo架构:
节点角色说明
调用关系说明
dubbo官方文档可知,dubbo依赖注册中心,所以使用dubbo,需要提前搭建好注册中心。
dubbo官网-》文档-》用户文档-》参考手册-》注册中心参考手册-》推荐使用Zookeeper注册中心。
Zookeeper官网下载:https://zookeeper.apache.org/,我下载的是zookeeper-3.5.9版本:
下载完,解压后,新建个文件夹data,用来存放后期临时数据(随便起名字和路径,只要与后面配置文件中dataDir指向的地址一致就行)
在conf文件夹中新建zoo.cfg文件(将zoo_sample.cfg内容复制到zoo.cfg里进行修改),调整dataDir即可:
(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 实例通信端口号不能一样,所以要给它们分配不同的端口号。
进到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端口:
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里。
从github下载dubbo admin项目:https://github.com/apache/dubbo-admin,解压;
新版本的dubbo-admin已经修改了方式,使用了前后端分离的方式,结构中的dubbo-admin-server是我们的服务后端,dubbo-admin-ui是我们的前端:
前端又是使用的node.js,所以想要启动dubbo-admin首先需要安装node.js环境,进入nodejs官网https://nodejs.org/en/下载,一路next安装即可(没必要下载最新的,使用最多人使用的版本即可)
安装完,命令行测试一下:
我们的nodejs环境已经安装完成。
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端口。
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加端口,然后保存。 但是我这个版本并没有这样操作修改也能访问!!!!不知道是内置了还是什么情况待研究!